c#排列所有组合 求高手来 实在是想不出来了

天然不刺激 2017-09-20 08:50:16

根据阶乘公式 7 7 7 7 7 7 这里有6个数字都是一样的
n!/m!(n-m)! 这个6等于n

0个2有1种可能 7 7 7 7 7 7

6!/1!(6-1)!=6 1个2有6种可能
第一种 2 7 7 7 7 7
第二种 7 2 7 7 7 7
第三种 7 7 2 7 7 7
第四种 7 7 7 2 7 7
第五种 7 7 7 7 2 7
第六种 7 7 7 7 7 2

6!/2!(6-2)!=15 2个2有15种可能
第一种 2 2 7 7 7 7
第二种 2 7 2 7 7 7
第三种 2 7 7 2 7 7
第四种 2 7 7 7 2 7
第五种 2 7 7 7 7 2
第六种 7 2 2 7 7 7
第七种 7 2 7 2 7 7
第八种 7 2 7 7 2 7
第九种 7 2 7 7 7 2
第十种 7 7 2 2 7 7
第十一种 7 7 2 7 2 7
第十二种 7 7 2 7 7 2
第十三种 7 7 7 2 2 7
第十四种 7 7 7 2 7 2
第十五种 7 7 7 7 2 2

6!/3!(6-3)!=20 3个2有20种可能
第一种 2 2 2 7 7 7
第二种 2 2 7 2 7 7
第三种 2 2 7 7 2 7
第四种 2 2 7 7 7 2
第五种 2 7 2 2 7 7
第六种 2 7 2 7 2 7
第七种 2 7 2 7 7 2
第八种 2 7 7 2 2 7
第九种 2 7 7 2 7 2
第十种 2 7 7 7 2 2
第十一种 7 2 2 2 7 7
第十二种 7 2 2 7 2 7
第十三种 7 2 2 7 7 2
第十四种 7 2 7 2 2 7
第十五种 7 2 7 2 7 2
第十六种 7 2 7 7 2 2
第十七种 7 7 2 2 2 7
第十八种 7 7 2 2 7 2
第十九种 7 7 2 7 2 2
第二十种 7 7 7 2 2 2

4个2有15种可能


6个2有1种可能 2 2 2 2 2 2
如果乱的话我上传了图片 ,不需要思路 ,实在是想不出来了,求高手【直接附上代码 】 写上注释 谢谢大侠!!
...全文
446 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2017-09-21
  • 打赏
  • 举报
回复
嗯,有点冒失了。其实就是求组合
        static void Main(string[] args)
{
var a = new List<int>() { 0, 1, 2, 3, 4, 5 };
var s = "777777";
for (var n = 1; n <= s.Length; n++)
{
Console.WriteLine("n = "+n);
foreach (var k in CombinationIndex(s.Length, n))
{
var t = s.Select((x, i) => k.Contains(i) ? '2' : x);
Console.WriteLine(string.Join(", ", t));
}
}
}
        //C(n,m) 组合序数,可作为数组下标
static IEnumerable<List<int>> CombinationIndex(int len, int num)
{
var d = Enumerable.Range(0, len);
var r = d.Select(x => new int[] { x });
for (int i = 1; i < num; i++)
{
r = r.SelectMany(x => d.Where(y => y.CompareTo(x.First()) < 0).Select(y => new int[] { y }.Concat(x).ToArray()));
}
foreach (var x in r) yield return x.ToList();
}
天然不刺激 2017-09-20
  • 打赏
  • 举报
回复
实在是没头绪,能把链接发出来嘛 万分感谢
xuzuning 2017-09-20
  • 打赏
  • 举报
回复
那么你需要得到什么呢? 若是想获取所有排列情况那算法是现成的 你只要计算出 1,2,3,4,5,6 的全排列(代码网上有,一搜一大堆) 并将<= n 的替换成 2,>n 的替换成 7,就是你要的结果了

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧