我有一个程序需要进行许多排列并保存它们 P型有6个字符,N型有5个字符,C有23个可能的选项 组合必须是
形式A=PNPPNNPPNPPNNP
B=PNPNPNPNPNPNPN
then save these to ouput file:
A0CCCCA0CCCCA0CCCCA0
...
AnCCCCA0CCCCA0CCCCA0
...
AnCCCCAnCCCCA0CCCCA0
...
AnCCCCAnCCCCBnCCCCAn
...
AnCCCCAnCCCCBnCCCCBn
....
BnCCCCBnCCCCBnCCCCBn
我写了一个程序,它创建了PNPPNNPPNPPNNP的所有可能组合,并将它们存储在一个数组中,但是我的记忆在它完成之前就已经填满了。
int current=0;
int p1=0;
string temp="";
while(p1<6)
{
string temp1=polar[p1];
//NPPNNPPNPPNNP
int n1=0;
while(n1<5)
{
string temp2=nonpolar[n1];
//PPNNPPNPPNNP
int p2=0;
while(p2<6)
{
string temp3=polar[p2];
//PNNPPNPPNNP
int p3=0;
while(p3<6)
{
string temp4=polar[p3];
//NNPPNPPNNP
int n2=0;
while(n2<5)
{
string temp5=nonpolar[n2];
//NPPNPPNNP
int n3=0;
while(n3<5)
{
string temp6=nonpolar[n3];
//PPNPPNNP
int p4=0;
while(p4<6)
{
string temp7=polar[p4];
//PNPPNNP
int p5=0;
while(p5<6)
{
string temp8=polar[p5];
//NPPNNP
int n4=0;
while(n4<5)
{
string temp9=nonpolar[n4];
//PPNNP
int p6=0;
while(p6<6)
{
string temp10=polar[p6];
//PNNP
int p7=0;
while(p7<6)
{
string temp11=polar[p7];
//NNP
int n5=0;
while(n5<5)
{
string temp12=nonpolar[n5];
//NP
int n6=0;
while(n6<5)
{
string temp13=nonpolar[n6];
//P
int p8=0;
while(p8<6)
{
string temp14=polar[p8];
a[current]=temp1+temp2+temp3+temp4+temp5+temp6+temp7+temp8+temp9+temp10+temp11+temp12+temp13+temp14;
current=current+1;
p8=p8+1;
}
n6=n6+1;
}
}
n5=n5+1;
}
p6=p6+1;
}
n4=n4+1;
}
p5=p5+1;
}
p4=p4+1;
}
n3=n3+1;
}
n2=n2+1;
}
p3=p3+1;
}
p2=p2+1;
}
n1=n1+1;
}
p1=p1+1;
}
谢谢!
示例的进一步代码
string[] polar = new string[10];
polar[0]="H";
polar[1]="Q";
polar[2]="N";
polar[3]="K";
polar[4]="D";
polar[5]="E";
string[] nonpolar = new string[10];
nonpolar[0]="F";
nonpolar[1]="L";
nonpolar[2]="I";
nonpolar[3]="M";
nonpolar[4]="V";
string[] all = new string[100];
all[0]="A";
all[1]="B";
all[2]="C";
all[3]="D";
all[4]="E";
all[5]="F";
all[6]="G";
all[7]="H";
all[8]="I";
all[9]="J";
all[10]="K";
all[11]="L";
all[12]="M";
all[13]="N";
all[14]="O";
all[15]="P";
all[16]="Q";
all[17]="R";
all[18]="S";
all[19]="T";
all[20]="U";
all[21]="V";
all[22]="W";
all[23]="Y";
我当前的代码生成HFHHFFHHFHHFFH作为第一个正确的alpha实例,但我需要让它生成
A0CCCCA0CCCCA0CCCCA0 HFHHFFHHFHHFFHAAAAHFHHFFHHFHHFFHAAAAHFHHFFHHFHHFFHAAAAHFHHFFHHFHHFFH
作为第一个输出后跟 A0CCCCA0CCCCA0CCCCA1 HFHHFFHHFHHFFHAAAAHFHHFFHHFHHFFHAAAAHFHHFFHHFHHFFHAAAAHFHHFFHHFHHFFQ
所有可能的排列,包括Cs随着投入混合物的所有测试版而变化答案 0 :(得分:0)
似乎你需要具有特定排序的排列......一般来说,你的代码应该更像这样:
var polar=new string[]{"A", "B"};
var nonPolar=new string[]{"a", "b"};
var all = new string[]{"a", "b"};
var query=from pos1 in polar
from pos2 in nonPolar
from pos3 in all
select pos1 + pos2 + pos3;
foreach (var element in query)
Console.WriteLine(element);