求一个排列的C#算法
比如我有一个数组或者LIST;里面放了许多数据;可以相同;尽量不用递归
现在我想实现一个排列 生成另一组数据;
如:List<int> lALL=new List<int>();里面有数据;1,20,300;这个是任意的个数的,这里少点方便举例
我想得到两位数的排列;方法List<int[]> PaiLie(List<int> ls,int count);这个定义我乱写的哈;会C#的都应该明白意思的.呵呵;
使用时 PaiLie(lAll,2);
得到的结果是几组数组;
1,20
1,300
20,1
20,300
300,1
300,20
就这样;请问方法怎么写;谢谢!
每个数据每一组中最多出现一次;当然有相同的数据出现个数不会超过总表个数(这个明白吧)
如LIST 有数据 20,20,1
答案就是
20,20
20,1
20,20
20,1
1,20
1,20
不明白的或者觉得分不够的,可以QQ联系我,QQ:908382818
[解决办法]
之前好像已有个
公历→农历
2013年06月11日
双子座
二一三年五月初四
癸巳〖蛇〗,戊午月,戊申日,辛酉时
今属:土;五行:水火土金;缺:木。
纳音五行:长流水。
[解决办法]
LINQ试试可以不。
[解决办法]
using System;
using System.Collections.Generic;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
int[] lAll = { 1, 20, 300 };
List<int[]> paiLie = PaiLie(lAll);
foreach (var item in paiLie)
{
Console.WriteLine(item[0]+","+item[1]);
}
Console.ReadLine();
}
public static List<int[]> PaiLie(int[] lAll)
{
List<int[]> paiLie = new List<int[]>();
for (int i = 0; i < lAll.Length; i++)
{
for (int j = 0; j < lAll.Length; j++)
{
if (i != j)
{
paiLie.Add(new int[]{lAll[i],lAll[j]});
}
}
}
return paiLie;
}
}
}
1,20
1,300
20,1
20,300
300,1
300,20
[解决办法]
这不就只是一个自由组合么。。。。或者,多点连线问题,带方向的。
[解决办法]
傻的是自己,不是别人啊。
[解决办法]
每多一,就多一循嵌套,思路差不多,然可以分子用,不麻是必定的。或有牛人有更好的法,忙一下