求一个排列问题,谢谢~~~

wtoeb 2016-03-20 09:26:14
求一个排列问题,比如:
原始数据是1、2。(项目中实际用到的数据是1-10)
全排列是:
1 1
1 2
2 1(与1 2重复,所以就不要了)
2 2
我要的数据是:
1 1
1 2
2 2
怎么做?谢谢~~~
...全文
153 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
拜一刀 2016-03-21
  • 打赏
  • 举报
回复
    function count() {
result = "";
for (i1 = 0; i1 <= 10; i1++) {
for (i2 = 0; i2 <= 10 - i1; i2++) {
for (i3 = 0; i3 <= 10 - i1 - i2; i3++) {
for (i4 = 0; i4 <= 10 - i1 - i2 - i3; i4++) {
for (i5 = 0; i5 <= 10 - i1 - i2 - i3 - i4; i5++) {
for (i6 = 0; i6 <= 10 - i1 - i2 - i3 - i4 - i5; i6++) {
for (i7 = 0; i7 <= 10 - i1 - i2 - i3 - i4 - i5 - i6; i7++) {
for (i8 = 0; i8 <= 10 - i1 - i2 - i3 - i4 - i5 - i6 - i7; i8++) {
for (i9 = 0; i9 <= 10 - i1 - i2 - i3 - i4 - i5 - i6 - i7 - i8; i9++) {
i10 = 10 - i1 - i2 - i3 - i4 - i5 - i6 - i7 - i8 - i9
result += i1 + " " + i2 + " " + i3 + " " + i4 + " " + i5 + " " + i6 + " " + i7 + " " + i8 + " " + i9 + " " + i10 + " "

}
}
}
}
}
}
}
}
}
$("#abc").html(result);
}

用js搞了下,显示到textarea里面,想复制到word里看下字数结果一复制结果吧浏览器卡死了...
拜一刀 2016-03-21
  • 打赏
  • 举报
回复
1到10各自数量为n1到n10 for(n1=0;n1<=10;n++){ for(n2=0;n2<=10-n1;n++){ for.....最后n10就是10-n1-n2-...-n9 } } 具体排列是浮云,只要记每种的数量就行了吧
熊猫rrr 2016-03-21
  • 打赏
  • 举报
回复
可以用递归法,下面是一个泛型的示例,参数list是需要求组合的列表,num是组合的个数,startindex是从第几个数开始组合(一般都是0),outputLIst是输出列表

public static class Class1<T>
    {
        private static int m = 0;
        private static List<T> tempList = new List<T>();
 
        public static void GetResult(List<T> list, int num, int startIndex, ref List<List<T>> outputList)
        {            
            m++;
            for (int i = startIndex; i < list.Count; i++)
            {
                tempList.Add(list[i]);
                if (m == num)
                {
                    T[] array = new T[num];
                    tempList.CopyTo(array);
                    outputList.Add(array.ToList());
                }
                else
                {
                    GetResult(list, num, i + 1, ref outputList);
                }
 
                tempList.Remove(list[i]);
                 
            }
            m--;
        }
    }
xuzuning 2016-03-21
  • 打赏
  • 举报
回复
排列中,2 1 与1 2重复,所以就留一个 那么这就是 组合 求组合的算法不下十种,目前认为效率最高的是 01移动算法 你可以在网上找到各种算法的代码和算法说明 关键在于你得理解算法的原理
zbdzjx 2016-03-21
  • 打赏
  • 举报
回复
            textBox1.Clear();
            int i = 1;
            for (int i1 = 1; i1 <= 2; i1++)
                for (int i2 = i1; i2 <= 2; i2++)
                    for (int i3 = i2; i3 <= 2; i3++)
                    {
                        textBox1.Text += i.ToString() + "    " + i1.ToString() + "    " + i2.ToString() + "    " + i3.ToString() + "\r\n";
                        i++;
                    }
threenewbee 2016-03-20
  • 打赏
  • 举报
回复
var index = 1; for (var index01 = 1; index01 <= 2; index01++) { var index01X = index01; for (var index02 = 1; index02 <= 2; index02++) { var index02X = index02; for (var index03 = 1; index03 <= 2; index03++) { var index03X = index03; if (index01X <= index02X && index02X <= index03X) Console.WriteLine(index + @"." + index01X + @"-" + index02X + @"-" + index03X); } } index++; }
wtoeb 2016-03-20
  • 打赏
  • 举报
回复
我先写一个示例出来吧:

var index = 1;
for (var index01 = 1; index01 <= 2; index01++)
{
    var index01X = index01;
    for (var index02 = 1; index02 <= 2; index02++)
    {
        var index02X = index02;
        for (var index03 = 1; index03 <= 2; index03++)
        {
            var index03X = index03;
            Console.WriteLine(index + @"." + index01X + @"-" + index02X + @"-" + index03X);
        }
    }
    index++;
}
// 结果是:
1.    1    1    1
2.    1    1    2
3.    1    2    1    // 与2重复(顺序不同,也算重复),舍弃
4.    1    2    2
5.    2    1    1    // 与2重复(顺序不同,也算重复),舍弃
6.    2    1    2    // 与4重复(顺序不同,也算重复),舍弃
7.    2    2    1    // 与4重复(顺序不同,也算重复),舍弃
8.    2    2    2
threenewbee 2016-03-20
  • 打赏
  • 举报
回复
排是可以排,不过1-10的结果会非常大。
littl_e 2016-03-20
  • 打赏
  • 举报
回复
设置一个计数器,统计下元素被调用的次数,这个方案可行不?
Poopaye 2016-03-20
  • 打赏
  • 举报
回复
你倒是先写个全排列出来啊

110,534

社区成员

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

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

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