有N个数,分别从其中取1至N个数进行组合(不考虑顺序),如何实现?
例如数组:1,2,3,4,5,分别从其中取1至5个数的组合是
取1个数组合:1,2,3,4,5;
取2个数组合:12,13,14,15,23,24,25,34,35,45;
取3个数组合:123,124,125,134,135,145,234,235,245,345;
取4个数组合:1234,1235,1345,2345;
取5个数组合:12345
递归
我寫了個,尚待優划
[CODE] static void Main()
{
//fun(15);
ArrayList al=new ArrayList(5);
al.Add(1);
al.Add(2);
al.Add(3);
al.Add(4);
//al.Add(5);
result=(ArrayList)al.Clone();
ByGroup(al);
result.Sort();
for(int i=0;i<result.Count;i++)
{
Console.Write(result[i]);
Console.Write(",,");
}
Console.ReadLine();
}
static ArrayList result=new ArrayList(11);
public static void ByGroup(ArrayList al)
{
ArrayList temp=new ArrayList(al.Count);
temp=(ArrayList)al.Clone();
for(int i=0;i<temp.Count;i++)
{
al.RemoveAt(i);
if(al.Count>=1)
ByGroup(al);
else
return;
al=(ArrayList)temp.Clone();
}
string str="";
for(int i=0;i<temp.Count;i++)
{
str+=temp[i].ToString();
}
if(!result.Contains(Convert.ToInt32(str)))
{
result.Add(Convert.ToInt32(str));
}
}[/CODE]