关于字母的组合问题

sinpoe 2006-10-23 04:18:05
有10个字母,(a,b,c,d,e,f,g,h,i,j)
选择其中6个
要求出所有组合,
字母不重复,没有顺序要求
...全文
122 9 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovvver 2006-10-23
  • 打赏
  • 举报
回复
我的需要改一下:
ArrayList al = new ArrayList();//用来存放所有组合
char[] chr = new char[]{'a','b','c','d','e','f','g','h','i','j'};
string str1,str2,str3,str4,str5,str6;
int i1,i2,i3,i4,i5,i6;
for(i1 = 0;i1<chr.Length;i1++)
{
str1 = chr[i1].ToString();
for(i2 = 0;i2<chr.Length && i2!=i1;i2++)
{
str2 = chr[i2].ToString();
for(i3 = 0;i3<chr.Length&&i3!=i1&&i3!=i2;i3++)
{
str3 = chr[i3].ToString();
for(i4 = 0;i4<chr.Length&&i4!=i1&&i4!=i2&&i4!=i3;i4++)
{
str4 = chr[i4].ToString();
for(i5 = 0;i5<chr.Length&&i5!=i1&&i5!=i2&&i5!=i3&&i5!=i4;i5++)
{
str5 = chr[i5].ToString();
for(i6 = 0;i6<chr.Length&&i6!=i1&&i6!=i2&&i6!=i3&&i6!=i4&&i6!=i5;i6++)
{
str6 = chr[i6].ToString();
al.Add(str1+str2+str3+str4+str5+str6);
}
}
}
}
}
}
string[] str = new string[al.Count];
al.CopyTo(str);
//str就是所有组合的数组
sinpoe 2006-10-23
  • 打赏
  • 举报
回复
明白拉,多谢
sinpoe 2006-10-23
  • 打赏
  • 举报
回复
to lovvver(www.notsoft.cn)大大

一样,如果开始的字符不定长如何写,分你们都有份,:)
sinpoe 2006-10-23
  • 打赏
  • 举报
回复
多谢xingyaohua(邢跃华) 大大

如果我的字母不定个数应该怎么写,就是说6~10个,这个循环不固定了,头晕
lovvver 2006-10-23
  • 打赏
  • 举报
回复
写个循环类做就可以了。
ArrayList al = new ArrayList();//用来存放所有组合
char[] chr = new char(){'a','b','c','d','e','f','g','h','i','j'};
string str1,str2,str3,str4,str5,str6;
for(int i1 = 0;i1<chr.Length;i1++)
{
str1 = chr[i1].ToString();
for(int i2 = 0;i2<chr.Length,i2!=i1;i2++)
{
str2 = chr[i2].ToString();
for(int i3 = 0;i3<chr.Length,i3!=i1,i3!=i2;i3++)
{
str3 = chr[i3].ToString();
for(int i4 = 0;i4<chr.Length,i4!=i1,i4!=i2,i4!=i3;i4++)
{
str4 = chr[i4].ToString();
for(int i5 = 0;i5<chr.Length,i5!=i1,i5!=i2,i5!=i3,i5!=i4;i5++)
{
str5 = chr[i5].ToString();
for(int i6 = 0;i6<chr.Length,i6!=i1,i6!=i2,i6!=i3,i6!=i4,i6!=i5;i6++)
{
str6 = chr[i6].ToString();
al.Item.Add(str1+str2+str3+str4+str5+str6);
}
}
}
}
}
}
string[] str = new string[al.Count];
al.CopyTo(str);
//str就是所有组合的数组
xingyaohua 2006-10-23
  • 打赏
  • 举报
回复
ArrayList strArray=new ArrayList();
for(char A='a';A<='j';A++)
{
for(char B='a';B<='j';B++)
{
if(B!=A)
{
for(char C='a';C<='j';C++)
{
if(A!=C && B!=C)
{
for(char D='a';D<='j';D++)
{
if(D!=A && D!=B &&D!=C)
for(char E='a';E<='j';E++)
{
if(E!=A && E!=B && E!=C && E!=D)
for(char F='a';F<='j';F++)
{
if(F!=A && F!=B && F!=C && F!=D && F!=E)
{
strArray.Add(A.ToString()+B.ToString()+C.ToString()+D.ToString()+E.ToString()+F.ToString());

}
}
}
}
}
}
}
}
我以前学C用到的
sinpoe 2006-10-23
  • 打赏
  • 举报
回复
up
sinpoe 2006-10-23
  • 打赏
  • 举报
回复
多谢copico(★★★★★David) 大大的关注

但我这里是指定了字符,只能在其中选择几个,无顺序要求,就是说abc和cba是一样结果
就是字符不能重复
copico 2006-10-23
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/4976/4976478.xml?temp=.4058802
发帖
C#

10.9w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2006-10-23 04:18
社区公告

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