输出1,2,2,3,4,5的所有排列组合,4不能在第三位,3和5不能相邻
解决方案 »
- 编码的 ISO-8859-1 和 iso8859-1 有什么不同?分别适用于什么环境
- 弱弱的问题:服务端通过socket传给客户端的十六进制数"EA",怎么到了客户端编成了65533的十进制数了?应该是234的啊??
- JDBC里访问Oracle Blob字段的问题
- 通过apache的common-net.jar写的ftp上传,上传后的图片都不能用,请教各位大虾如何解决?老弟跪求了!
- 一个菜单退出的问题 请高手给我看看
- 奇怪的问题
- 关于VECTOR与DOWNCAST
- 空字符串的比较
- 一个菜鸟的大问题,急!!!-解决就给分!!!
- 抛出throw异常和捕捉catch异常的问题?
- 怎么能够截取一个数组的一部份?
- 用commons-email-1.1.jar和mail.jar包发送邮件报错
import java.util.HashSet;
import java.util.Set;public class TTTT {
public static void main(String[]args)
{
int ii[]=new int[]{1,2,2,3,4,5};
Set ss= new HashSet();
for(int i=0;i<ii.length;i++)
{
for(int j=0;j<ii.length;j++)
{
for(int k=0;k<ii.length;k++)
{
for(int l=0;l<ii.length;l++)
{
for(int m=0;m<ii.length;m++)
{
for(int n=0;n<ii.length;n++)
{
//System.out.println(ii[i]+""+ii[j]+""+ii[k]+""+ii[l]+""+ii[m]+""+ii[n]);
if( i!=j&&i!=k&&i!=l&&i!=m&&i!=n
&& j!=k&&j!=l&&j!=m&&j!=n
&& k!=l&&k!=m&&k!=n
&& l!=m&&l!=n
&& m!=n)
{
String str=ii[i]+""+ii[j]+""+ii[k]+""+ii[l]+""+ii[m]+""+ii[n];
System.out.println(str);
if(!str.matches("\\d\\d4\\d\\d\\d"))
{
if(!str.matches("[\\d]*35[\\d]*|[\\d]*53[\\d]*"))
{
System.out.println(str);
ss.add(str);
}
}
}
}
}
}
}
}
}
for (Object tt : ss) {
System.out.println(tt);
}
}
}
没事做又看了下贴子。 开先我用数学方法来解,越想越麻烦,就因为有两个2。
再仔细看看11楼(原来是AWUSSOFT)的,发现他只是把这六个数字
显示出来,看来是忘记LZ的条件了。于是,我就在他上来改了下:
package demo;
public class TTTT {
public static void main(String[]args)
{
int ii[]=new int[]{1,2,2,3,4,5};
int sum=0;//一共有多少种排列
String strResult="";//作用见下面
for(int i=0;i<ii.length;i++)
{
for(int j=0;j<ii.length;j++)
{
for(int k=0;k<ii.length;k++)
{
for(int l=0;l<ii.length;l++)
{
for(int m=0;m<ii.length;m++)
{
for(int n=0;n<ii.length;n++)
{
if( i!=j && i!=k && i!=l && i!=m && i!=n
&& j!=k &&j !=l && j!=m && j!=n
&& k!=l && k!=m && k!=n
&& l!=m && l!=n
&& m!=n
){//显示1、2、2、3、4、5的所以排列
if(k!=4)//去掉第三位是4排列
{
if((i==3 && j==4) || (i==4 && j==3)||
(j==3 && k==4) || (j==4 && k==3) ||
(k==3 && l==4) || (k==4 && l==3) ||
(l==3 && m==4) || (l==4 && m==3) ||
(m==3 && n==4) || (m==4 && n==3)
){//去掉3、5相邻的排列
//不做什么
}else{
String str1=ii[i]+""+ii[j]+""+ii[k]+""+ii[l]+""+ii[m]+""+ii[n];
if(sum>0){
if(!strResult.contains(str1)){//去掉重复的(因为有两个2)
if(sum%14==0){
System.out.println(str1+"\t");
sum++;
}else{
System.out.print(str1+"\t");
sum++;
}
}
}else{
strResult=strResult+":"+str1;
System.out.println(str1+"\t");
sum++;
}
}
}
}
}
}
}
}
}
}
System.out.println("\nsum is:"+sum);
}
}---------------------运行结果----------------------
122354
122453 123245 123254 123524 123542 125324 125423 122453 123245 123254 123524 123542 125324 125423
132245 132254 132425 132452 132524 132542 132245 132254 132425 132452 132524 132542 135224 135242
135224 135242 135422 135422 142235 142253 142325 142352 142523 142532 142235 142253 142325 142352
142523 142532 145223 145232 145223 145232 145322 145322 152324 152423 152324 152423 153224 153242
153224 153242 212354 212453 213245 213254 213524 213542 215324 215423 221354 221453 223145 223154
223514 223541 225314 225413 231245 231254 231425 231452 231524 231542 232145 232154 232415 232451
232514 232541 235124 235142 235214 235241 235412 235421 241235 241253 241325 241352 241523 241532
242135 242153 242315 242351 242513 242531 245123 245132 245213 245231 245312 245321 251324 251423
252314 252413 253124 253142 253214 253241 212354 212453 213245 213254 213524 213542 215324 215423
221354 221453 223145 223154 223514 223541 225314 225413 231245 231254 231425 231452 231524 231542
232145 232154 232415 232451 232514 232541 235124 235142 235214 235241 235412 235421 241235 241253
241325 241352 241523 241532 242135 242153 242315 242351 242513 242531 245123 245132 245213 245231
245312 245321 251324 251423 252314 252413 253124 253142 253214 253241 312245 312254 312425 312452
312524 312542 312245 312254 312425 312452 312524 312542 315224 315242 315224 315242 315422 315422
321245 321254 321425 321452 321524 321542 322145 322154 322415 322451 322514 322541 325124 325142
325214 325241 325412 325421 321245 321254 321425 321452 321524 321542 322145 322154 322415 322451
322514 322541 325124 325142 325214 325241 325412 325421 351224 351242 351224 351242 351422 351422
352124 352142 352214 352241 352412 352421 352124 352142 352214 352241 352412 352421 412235 412253
412325 412352 412523 412532 412235 412253 412325 412352 412523 412532 413225 413252 413225 413252
413522 413522 415223 415232 415223 415232 415322 415322 421235 421253 421325 421352 421523 421532
422135 422153 422315 422351 422513 422531 423125 423152 423215 423251 423512 423521 425123 425132
425213 425231 425312 425321 421235 421253 421325 421352 421523 421532 422135 422153 422315 422351
422513 422531 423125 423152 423215 423251 423512 423521 425123 425132 425213 425231 425312 425321
451223 451232 451223 451232 451322 451322 452123 452132 452213 452231 452312 452321 452123 452132
452213 452231 452312 452321 453122 453122 453212 453221 453212 453221 512324 512423 512324 512423
513224 513242 513224 513242 521324 521423 522314 522413 523124 523142 523214 523241 521324 521423
522314 522413 523124 523142 523214 523241 531224 531242 531224 531242 531422 531422 532124 532142
532214 532241 532412 532421 532124 532142 532214 532241 532412 532421 541223 541232 541223 541232
541322 541322 542123 542132 542213 542231 542312 542321 542123 542132 542213 542231 542312 542321 sum is:407
public static void main(String []args)
{
int a=0;
int c=2;
String q[]=new String[720];
int w=0;
boolean b1=true;
String str="";
int []b=new int[6];
for(int n2=0;n2<720;++n2)
{
for(int j=0;j<6;++j)
{
int t=(int)(Math.random()*5+1);
b[j]=t;
if(j>0)
{
for(int i=0;i<j;i++)
{
if(b[j]==2)
{
c--;
}
if(b[j]==b[i])
{
if(b1)
{
if(b[j]==2)
{
b1=false;
}
else
{
--j;
break;
}
}
else
{
--j;
break;
}
}
if(i==j-1)
{
str+=b[j];
}
}
}
else
{
str+=b[j];
}
}
if(Integer.parseInt(str.substring(2,3))!=4)
for(int i=0;i<5;i++)
{
if((Integer.parseInt(str.substring(i,i+1))+Integer.parseInt(str.substring(i+1,i+2)))!=8)
{
if(i==4)
{
// System.out.print((Integer.parseInt(str.substring(i,i+1))+Integer.parseInt(str.substring(i+1,i+2)))+" ");
a++;
q[w]=str;
if(w>0)
{
for(int r=0;r<w;r++)
{
if(q[w]==q[r])
{
--n2;w--;
break;
}
else
{
}
}w++; System.out.print(str+" ");
}
else
{
w++; System.out.print(str+" ");
}
break;
}
}
else
{ --n2;
break;
}
}
else
{
--n2;
}
for(int i=0;i<b.length;i++)
{
b[i]=0;
c=2;
b1=true;
str="";
}
}
System.out.println("");
System.out.print(a);
}
}
不知道有多少个,郁闷怎么这么难啊
public static void main(String[]args)
{
int ii[]=new int[]{1,2,2,3,4,5};
int sum=0;//成功排列的总数。
for(int i1=0;i1<ii.length;i1++)
{
for(int i2=0;i2<ii.length;i2++)
{
for(int i3=0;i3<ii.length;i3++)
{
for(int i4=0;i4<ii.length;i4++)
{
for(int i5=0;i5<ii.length;i5++)
{
for(int i6=0;i6<ii.length;i6++)
{
if(check(i1,i2,i3,i4,i5,i6))//检查是否符合要求。
{
System.out.print(""+ii[i1]+ii[i2]+ii[i3]+ii[i4]+ii[i5]+ii[i6]+" ");
sum++;
}
}
}
}
}
}
}
System.out.println("\nsum is:"+sum);
}
private static boolean check(int i1,int i2,int i3,int i4,int i5,int i6)
{
if(i3==4)//排除第3位为4的情况。i3为第三位;ii[4]=4,所以此处可用i3==4来判定。
return false;
int jj[]=new int[]{i1,i2,i3,i4,i5,i6};
int m,n;
for(m=0;m<jj.length-1;m++)//排除数字重复出现的情况。
{
if((jj[m]==3&&jj[m+1]==5)||(jj[m]==5&&jj[m+1]==3))
return false;
}
for(m=0;m<jj.length;m++)//排除3和5相邻的情况。
{
n=m+1;
for(;n<jj.length;n++)
{
if(jj[m]==jj[n])
return false;
}
}
return true;
}
}抱歉,装ECLIPSE的机器坏了,只能用记事本打..
已经在JDK6环境下的编译及运行,均未发现问题..
还请哪位装有ECLIPSE的朋友帮运行一下,顺带把结果贴上来..
自己检查了一下,应该是不会有错了,就这么3个判断而已...
{
if(!str.matches("[\\d]*35[\\d]*|[\\d]*53[\\d]*"))
{
System.out.println(str);
ss.add(str);
}
}
晕了正则表达式不起作用,谁帮我改改看.
String str=ii[i]+""+ii[j]+""+ii[k]+""+ii[l]+""+ii[m]+""+ii[n];
System.out.println(str);//这里多了一行,如果把这一行去了就正确了.
if(!str.matches("\\d\\d4\\d\\d\\d"))
{
import java.util.HashSet;
import java.util.Set;public class TTTT {
public static void main(String[]args)
{
int ii[]=new int[]{1,2,2,3,4,5};
Set ss= new HashSet();
for(int i=0;i<ii.length;i++)
{
for(int j=0;j<ii.length;j++)
{
for(int k=0;k<ii.length;k++)
{
for(int l=0;l<ii.length;l++)
{
for(int m=0;m<ii.length;m++)
{
for(int n=0;n<ii.length;n++)
{
//System.out.println(ii[i]+""+ii[j]+""+ii[k]+""+ii[l]+""+ii[m]+""+ii[n]);
if( i!=j&&i!=k&&i!=l&&i!=m&&i!=n
&& j!=k&&j!=l&&j!=m&&j!=n
&& k!=l&&k!=m&&k!=n
&& l!=m&&l!=n
&& m!=n)
{
String str=ii[i]+""+ii[j]+""+ii[k]+""+ii[l]+""+ii[m]+""+ii[n];
// System.out.println(str);
if(!str.matches("\\d\\d4\\d\\d\\d"))
{
if(!str.matches("[\\d]*35[\\d]*|[\\d]*53[\\d]*"))
{
// System.out.println(str);
ss.add(str);
}
}
}
}
}
}
}
}
}
System.out.println("总数为:"+ss.size());
int i=1;
for (Object tt : ss) {
if(i++%11==0)
{
System.out.println();
}
System.out.print(tt+"\t");
}
}
}总数为:198
341225 541322 223145 542321 152342 522134 432521 513224 523124 322514
523241 232154 225134 342251 431225 315242 513242 513422 252413 522413 231542
321542 132245 122543 522431 412325 132452 213452 132425 231524 542123 242513
452321 423251 125423 312524 322541 145223 152432 312254 523412 132524 225431
321524 432125 322415 523214 325412 321254 512342 212543 421523 312452 322451
412523 251342 252134 143225 312245 521243 325124 215243 315422 231254 245132
252341 321245 125234 541232 512234 252143 345212 342215 452123 345221 431252
425132 521423 423215 213425 143252 123254 215432 321452 225143 452312 451322
522143 342125 451232 251234 241523 543212 243251 432251 213245 322145 523142
542312 245231 425213 232415 512432 342521 123245 423125 251432 152234 413252
415223 225413 232514 232451 223154 252431 543221 452213 312542 452132 322154
215423 542213 221543 223451 543122 231245 132254 522341 425123 251243 125243
123425 431522 542132 521324 231452 345122 521342 425231 325214 523421 512423
232145 341522 251324 221345 243125 232541 325421 432215 223415 413225 245123
215234 242315 241325 122345 243152 132542 315224 325142 245213 321425 252314
415232 123452 541223 152243 142523 342152 512243 432512 421325 422513 213254
521234 341252 452231 145232 422315 125432 512324 312425 325241 152423 142325
243215 231425 152324 451223 522314 521432 342512 423152 212345 542231 432152
251423
public static void main(String[]args)
{ boolean b1=true;
Vector v=new Vector();
int ii[]=new int[]{1,2,2,3,4,5};
//Set ss= new HashSet();
int a=0;
for(int i=0;i<ii.length;i++)
{
for(int j=0;j<ii.length;j++)
{
for(int k=0;k<ii.length;k++)
{
for(int l=0;l<ii.length;l++)
{
for(int m=0;m<ii.length;m++)
{
for(int n=0;n<ii.length;n++)
{
if( i!=j&&i!=k&&i!=l&&i!=m&&i!=n
&& j!=k&&j!=l&&j!=m&&j!=n
&& k!=l&&k!=m&&k!=n
&& l!=m&&l!=n
&& m!=n)
{
String str=ii[i]+""+ii[j]+""+ii[k]+""+ii[l]+""+ii[m]+""+ii[n];
if(!str.matches("\\d\\d4\\d\\d\\d"))
{
if(!str.matches("[\\d]*35[\\d]*|[\\d]*53[\\d]*"))
{
if(a>0)
{
for(int b=0;b<v.size();b++)
{
if(v.elementAt(b).equals(str))
{ b1=false;
break;
}
} if(b1)
{
v.addElement(str);
a++;
System.out.print(str+" ");
}
else
{
b1=true;
}
}
else
{
a++;
System.out.print(str+" ");
}
}
}
}
}
}
}
}
}
}System.out.println("");
System.out.print(a);
// for(int b=1;b<v.size();b++)
// {
// for(int i=0;i<b;i++)
// {
// if(v.elementAt(b).equals(v.elementAt(i)))
// {
// System.out.println("有重复"+v.elementAt(b));
// }
// }
//
//
// }
}
}
我把上面的代码改了一下怎么是199个啊
122345 122543 123245 123254 123425 123452 125234 125243 125423
125432 122345 132245 132254 132425 132452 132524 132542 142325
142523 143225 143252 145223 145232 152234 152243 152324 152342
152423 152432 212345 212543 213245 213254 213425 213452 215234
215243 215423 215432 221345 221543 223145 223154 223415 223451
225134 225143 225413 225431 231245 231254 231425 231452 231524
231542 232145 232154 232415 232451 232514 232541 241325 241523
242315 242513 243125 243152 243215 243251 245123 245132 245213
245231 251234 251243 251324 251342 251423 251432 252134 252143
252314 252341 252413 252431 312245 312254 312425 312452 312524
312542 315224 315242 315422 321245 321254 321425 321452 321524
321542 322145 322154 322415 322451 322514 322541 325124 325142
325214 325241 325412 325421 341225 341252 341522 342125 342152
342215 342251 342512 342521 345122 345212 345221 412325 412523
413225 413252 415223 415232 421325 421523 422315 422513 423125
423152 423215 423251 425123 425132 425213 425231 431225 431252
431522 432125 432152 432215 432251 432512 432521 451223 451232
451322 452123 452132 452213 452231 452312 452321 512234 512243
512324 512342 512423 512432 513224 513242 513422 521234 521243
521324 521342 521423 521432 522134 522143 522314 522341 522413
522431 523124 523142 523214 523241 523412 523421 541223 541232
541322 542123 542132 542213 542231 542312 542321 543122 543212 543221
if((i==3 && j==4) || (i==4 && j==3)||
(j==3 && k==4) || (j==4 && k==3) ||
(k==3 && l==4) || (k==4 && l==3) ||
(l==3 && m==4) || (l==4 && m==3) ||
(m==3 && n==4) || (m==4 && n==3) 是3 和5不相邻,我弄的是什么?
还有"strResult=strResult+":"+str1;" 怎么就那里写一条? 另外两个就不写了?
思考一点都不严密? 还以为自己想的很好,都不仔细看下结果。
哎, 为什么总是那么粗心!!! 看改过的结果:
package demo;
public class TTTT {
public static void main(String[]args)
{
int ii[]=new int[]{1,2,2,3,4,5};
int sum=0;//一共有多少种排列
String strResult="";//作用见下面
for(int i=0;i<ii.length;i++)
{
for(int j=0;j<ii.length;j++)
{
for(int k=0;k<ii.length;k++)
{
for(int l=0;l<ii.length;l++)
{
for(int m=0;m<ii.length;m++)
{
for(int n=0;n<ii.length;n++)
{
if( i!=j && i!=k && i!=l && i!=m && i!=n
&& j!=k &&j !=l && j!=m && j!=n
&& k!=l && k!=m && k!=n
&& l!=m && l!=n
&& m!=n
){//显示1、2、2、3、4、5的所以排列
if(k!=4)//去掉第三位是4排列
{
if((i==3 && j==5) || (i==5 && j==3)||
(j==3 && k==5) || (j==5 && k==3) ||
(k==3 && l==5) || (k==5 && l==3) ||
(l==3 && m==5) || (l==5 && m==3) ||
(m==3 && n==5) || (m==5 && n==3)
){//去掉3、5相邻的排列
//不做什么
}else{
String str1=ii[i]+""+ii[j]+""+ii[k]+""+ii[l]+""+ii[m]+""+ii[n];
if(sum>0){
if(!strResult.contains(str1)){//去掉重复的(因为有两个2)
if(sum%14==0){
strResult=strResult+":"+str1;
System.out.println(str1+"\t");
sum++;
}else{
strResult=strResult+":"+str1;
System.out.print(str1+"\t");
sum++;
}
}
}else{
strResult=strResult+":"+str1;
System.out.println(str1+"\t");
sum++;
}
}
}
}
}
}
}
}
}
}
System.out.println("\nsum is:"+sum);
}
}
-----------------------------------结果------------------------------
122345
122543 123245 123254 123425 123452 125234 125243 125423 125432 132245 132254 132425 132452 132524
132542 142325 142523 143225 143252 145223 145232 152234 152243 152324 152342 152423 152432 212345
212543 213245 213254 213425 213452 215234 215243 215423 215432 221345 221543 223145 223154 223415
223451 225134 225143 225413 225431 231245 231254 231425 231452 231524 231542 232145 232154 232415
232451 232514 232541 241325 241523 242315 242513 243125 243152 243215 243251 245123 245132 245213
245231 251234 251243 251324 251342 251423 251432 252134 252143 252314 252341 252413 252431 312245
312254 312425 312452 312524 312542 315224 315242 315422 321245 321254 321425 321452 321524 321542
322145 322154 322415 322451 322514 322541 325124 325142 325214 325241 325412 325421 341225 341252
341522 342125 342152 342215 342251 342512 342521 345122 345212 345221 412325 412523 413225 413252
415223 415232 421325 421523 422315 422513 423125 423152 423215 423251 425123 425132 425213 425231
431225 431252 431522 432125 432152 432215 432251 432512 432521 451223 451232 451322 452123 452132
452213 452231 452312 452321 512234 512243 512324 512342 512423 512432 513224 513242 513422 521234
521243 521324 521342 521423 521432 522134 522143 522314 522341 522413 522431 523124 523142 523214
523241 523412 523421 541223 541232 541322 542123 542132 542213 542231 542312 542321 543122 543212
543221
sum is:198
看:
if(k!=4)//去掉第三位是4排列
{
if((i==3 && j==4) || (i==4 && j==3)||
(j==3 && k==4) || (j==4 && k==3) ||
(k==3 && l==4) || (k==4 && l==3) ||
(l==3 && m==4) || (l==4 && m==3) ||
(m==3 && n==4) || (m==4 && n==3)
){//去掉3、5相邻的排列
不是写的是3、5 不相邻的嘛,怎么写成3、4不相邻?
还有:
if(sum>0){
if(!strResult.contains(str1)){//去掉重复的(因为有两个2)
if(sum%14==0){
System.out.println(str1+"\t");
sum++;
}else{
System.out.print(str1+"\t");
sum++;
}
}
}else{
strResult=strResult+":"+str1;
System.out.println(str1+"\t");
sum++;
}
strResult=strResult+":"+str1; 就只那里写一条,还有两个地方就不用加上了?
不知道自己思考什么总是不严密,光犯这些低级错误。本以为自己考虑的很好,不用去想肯定是这样,连结果都没有仔细看一看!
粗心大意是自己的致命点!
再看下修改后的结果:package demo;
public class TTTT {
public static void main(String[]args)
{
int ii[]=new int[]{1,2,2,3,4,5};
int sum=0;//一共有多少种排列
String strResult="";//作用见下面
for(int i=0;i<ii.length;i++)
{
for(int j=0;j<ii.length;j++)
{
for(int k=0;k<ii.length;k++)
{
for(int l=0;l<ii.length;l++)
{
for(int m=0;m<ii.length;m++)
{
for(int n=0;n<ii.length;n++)
{
if( i!=j && i!=k && i!=l && i!=m && i!=n
&& j!=k &&j !=l && j!=m && j!=n
&& k!=l && k!=m && k!=n
&& l!=m && l!=n
&& m!=n
){//显示1、2、2、3、4、5的所以排列
if(k!=4)//去掉第三位是4排列
{
if((i==3 && j==5) || (i==5 && j==3)||
(j==3 && k==5) || (j==5 && k==3) ||
(k==3 && l==5) || (k==5 && l==3) ||
(l==3 && m==5) || (l==5 && m==3) ||
(m==3 && n==5) || (m==5 && n==3)
){//去掉3、5相邻的排列
//不做什么
}else{
String str1=ii[i]+""+ii[j]+""+ii[k]+""+ii[l]+""+ii[m]+""+ii[n];
if(sum>0){
if(!strResult.contains(str1)){//去掉重复的(因为有两个2)
if(sum%14==0){
strResult=strResult+":"+str1;
System.out.println(str1+"\t");
sum++;
}else{
strResult=strResult+":"+str1;
System.out.print(str1+"\t");
sum++;
}
}
}else{
strResult=strResult+":"+str1;
System.out.println(str1+"\t");
sum++;
}
}
}
}
}
}
}
}
}
}
System.out.println("\nsum is:"+sum);
}
}
-----------------------结果-----------------------------------
122345
122543 123245 123254 123425 123452 125234 125243 125423 125432 132245 132254 132425 132452 132524
132542 142325 142523 143225 143252 145223 145232 152234 152243 152324 152342 152423 152432 212345
212543 213245 213254 213425 213452 215234 215243 215423 215432 221345 221543 223145 223154 223415
223451 225134 225143 225413 225431 231245 231254 231425 231452 231524 231542 232145 232154 232415
232451 232514 232541 241325 241523 242315 242513 243125 243152 243215 243251 245123 245132 245213
245231 251234 251243 251324 251342 251423 251432 252134 252143 252314 252341 252413 252431 312245
312254 312425 312452 312524 312542 315224 315242 315422 321245 321254 321425 321452 321524 321542
322145 322154 322415 322451 322514 322541 325124 325142 325214 325241 325412 325421 341225 341252
341522 342125 342152 342215 342251 342512 342521 345122 345212 345221 412325 412523 413225 413252
415223 415232 421325 421523 422315 422513 423125 423152 423215 423251 425123 425132 425213 425231
431225 431252 431522 432125 432152 432215 432251 432512 432521 451223 451232 451322 452123 452132
452213 452231 452312 452321 512234 512243 512324 512342 512423 512432 513224 513242 513422 521234
521243 521324 521342 521423 521432 522134 522143 522314 522341 522413 522431 523124 523142 523214
523241 523412 523421 541223 541232 541322 542123 542132 542213 542231 542312 542321 543122 543212
543221
sum is:198
public class Sort {
public static void main(String[]args)
{
int ii[]=new int[]{1,3,4,5};
int sum=0;//成功排列的总数。
for(int i1=0;i1 <ii.length;i1++)
{
for(int i2=0;i2 <ii.length;i2++)
{
for(int i3=0;i3 <ii.length;i3++)
{
for(int i4=0;i4 <ii.length;i4++)
{
if(check(i1,i2,i3,i4))//排除此4个数字有重复出现的结果。
{
//在以上结果中插入2个2,保证不重复。并将结果保存到b[]中。
int m,n;
for(m=0;m<5;m++)
{
for(n=m+1;n<6;n++)
{
int a[]=new int[]{ii[i1],ii[i2],ii[i3],ii[i4]};
int b[]=new int[6];
for(int i=0,j=0;i<6;i++)
{
if(i==m||i==n)
b[i]=2;
else
{
b[i]=a[j];
j++;
}
}
if(check(b[0],b[1],b[2],b[3],b[4],b[5]))//排除不符合要求的值。
{
System.out.print(""+b[0]+b[1]+b[2]+b[3]+b[4]+b[5]+" ");
sum++;
}
}
}
}
}
}
}
}
System.out.println("\nsum is:"+sum);
}
private static boolean check(int i1,int i2,int i3,int i4)
{
int jj[]=new int[]{i1,i2,i3,i4};
int m,n;
for(m=0;m <jj.length;m++)//排除数字重复出现的情况。
{
for(n=m+1;n<jj.length;n++)
{
if(jj[m]==jj[n])
return false;
}
}
return true;
}
private static boolean check(int i1,int i2,int i3,int i4,int i5,int i6)
{
if(i3==4)//排除第3位为4的情况。
return false;
int jj[]=new int[]{i1,i2,i3,i4,i5,i6};
int m,n;
for(m=0;m <jj.length-1;m++)//排除3和5相邻的情况。
{
if((jj[m]==3&&jj[m+1]==5)||(jj[m]==5&&jj[m+1]==3))
return false;
}
return true;
}
}
import java.util.Vector;
import java.util.Set;public class Student {
public static void main(String[]args)
{
int ii[]=new int[]{1,2,2,3,4,5};
Vector ss= new Vector();
for(int i=0;i<ii.length;i++)
{
for(int j=0;j<ii.length;j++)
{
for(int k=0;k<ii.length;k++)
{
for(int l=0;l<ii.length;l++)
{
for(int m=0;m<ii.length;m++)
{
for(int n=0;n<ii.length;n++)
{
//System.out.println(ii[i]+""+ii[j]+""+ii[k]+""+ii[l]+""+ii[m]+""+ii[n]);
if( i!=j&&i!=k&&i!=l&&i!=m&&i!=n
&& j>k&&j!=l&&j!=m&&j!=n //24楼的第一个条件为j!=k,去除两个2的重复情况
&& k!=l&&k!=m&&k!=n&&k!=4 //加了一个可k!=4
&& l!=m&&l!=n
&& m!=n)
{
String str=ii[i]+""+ii[j]+""+ii[k]+""+ii[l]+""+ii[m]+""+ii[n];
if(!str.matches("[\\d]*35[\\d]*|[\\d]*53[\\d]*"))
{
// System.out.println(str);
ss.add(str);
}
}
}
}
}
}
}
}
System.out.println("总数为:"+ss.size());
int i=1;
for (Object tt : ss) {
if(i++%11==0)
{
System.out.println();
}
System.out.print(tt+"\t");
}
}
}
这是结果总数为:222
122345 122543 132245 132254 132425 132452 132524 132542 132245 132254
132425 132452 132524 132542 142325 142523 142325 142523 143225 143252 143225
143252 152234 152243 152324 152342 152423 152432 152234 152243 152324 152342
152423 152432 221345 221543 231245 231254 231425 231452 231524 231542 232145
232154 232415 232451 232514 232541 241325 241523 242315 242513 243125 243152
243215 243251 251234 251243 251324 251342 251423 251432 252134 252143 252314
252341 252413 252431 221345 221543 231245 231254 231425 231452 231524 231542
232145 232154 232415 232451 232514 232541 241325 241523 242315 242513 243125
243152 243215 243251 251234 251243 251324 251342 251423 251432 252134 252143
252314 252341 252413 252431 321245 321254 321425 321452 321524 321542 321245
321254 321425 321452 321524 321542 322145 322154 322415 322451 322514 322541
341225 341252 341225 341252 341522 341522 342125 342152 342215 342251 342512
342521 342125 342152 342215 342251 342512 342521 421325 421523 421325 421523
422315 422513 431225 431252 431225 431252 431522 431522 432125 432152 432215
432251 432512 432521 432125 432152 432215 432251 432512 432521 451223 451232
451223 451232 451322 451322 452123 452132 452213 452231 452312 452321 452123
452132 452213 452231 452312 452321 521234 521243 521324 521342 521423 521432
521234 521243 521324 521342 521423 521432 522134 522143 522314 522341 522413
522431 541223 541232 541223 541232 541322 541322 542123 542132 542213 542231
542312 542321 542123 542132 542213 542231 542312 542321 543122 543122 543212
543221 543212 543221
package helloWorld;import java.util.HashSet;
import java.util.Set;public class GGG { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str= "122345 122543 123245 123254 123425 123452 125234 125243 125423 "
+"125432 122345 132245 132254 132425 132452 132524 132542 142325 "
+"142523 143225 143252 145223 145232 152234 152243 152324 152342 "
+"152423 152432 212345 212543 213245 213254 213425 213452 215234 "
+"215243 215423 215432 221345 221543 223145 223154 223415 223451 "
+"225134 225143 225413 225431 231245 231254 231425 231452 231524 "
+"231542 232145 232154 232415 232451 232514 232541 241325 241523 "
+"242315 242513 243125 243152 243215 243251 245123 245132 245213 "
+"245231 251234 251243 251324 251342 251423 251432 252134 252143 "
+"252314 252341 252413 252431 312245 312254 312425 312452 312524 "
+"312542 315224 315242 315422 321245 321254 321425 321452 321524 "
+"321542 322145 322154 322415 322451 322514 322541 325124 325142 "
+"325214 325241 325412 325421 341225 341252 341522 342125 342152 "
+"342215 342251 342512 342521 345122 345212 345221 412325 412523 "
+"413225 413252 415223 415232 421325 421523 422315 422513 423125 "
+"423152 423215 423251 425123 425132 425213 425231 431225 431252 "
+"431522 432125 432152 432215 432251 432512 432521 451223 451232 "
+"451322 452123 452132 452213 452231 452312 452321 512234 512243 "
+"512324 512342 512423 512432 513224 513242 513422 521234 521243 "
+"521324 521342 521423 521432 522134 522143 522314 522341 522413 "
+"522431 523124 523142 523214 523241 523412 523421 541223 541232 "
+"541322 542123 542132 542213 542231 542312 542321 543122 543212 543221 ";
System.out.println(str.split(" ").length);
Set ss = new HashSet();
String []aa = str.split(" ");
for(int i=0;i<aa.length;i++)
{
if(ss.contains(aa[i]))
{
System.out.println("重复值:"+i+"-------"+aa[i]);
}
ss.add(aa[i]);
}
System.out.println(ss.size());
String tt = "122345 122543 132245 132254 132425 132452 132524 132542 132245 132254 "
+"132425 132452 132524 132542 142325 142523 142325 142523 143225 143252 143225 "
+"143252 152234 152243 152324 152342 152423 152432 152234 152243 152324 152342 "
+"152423 152432 221345 221543 231245 231254 231425 231452 231524 231542 232145 "
+"232154 232415 232451 232514 232541 241325 241523 242315 242513 243125 243152 "
+"243215 243251 251234 251243 251324 251342 251423 251432 252134 252143 252314 "
+"252341 252413 252431 221345 221543 231245 231254 231425 231452 231524 231542 "
+"232145 232154 232415 232451 232514 232541 241325 241523 242315 242513 243125 "
+"243152 243215 243251 251234 251243 251324 251342 251423 251432 252134 252143 "
+"252314 252341 252413 252431 321245 321254 321425 321452 321524 321542 321245 "
+"321254 321425 321452 321524 321542 322145 322154 322415 322451 322514 322541 "
+"341225 341252 341225 341252 341522 341522 342125 342152 342215 342251 342512 "
+"342521 342125 342152 342215 342251 342512 342521 421325 421523 421325 421523 "
+"422315 422513 431225 431252 431225 431252 431522 431522 432125 432152 432215 "
+"432251 432512 432521 432125 432152 432215 432251 432512 432521 451223 451232 "
+"451223 451232 451322 451322 452123 452132 452213 452231 452312 452321 452123 "
+"452132 452213 452231 452312 452321 521234 521243 521324 521342 521423 521432 "
+"521234 521243 521324 521342 521423 521432 522134 522143 522314 522341 522413 "
+"522431 541223 541232 541223 541232 541322 541322 542123 542132 542213 542231 "
+"542312 542321 542123 542132 542213 542231 542312 542321 543122 543122 543212 "
+"543221 543212 543221 ";
System.out.println(tt.split(" ").length);
Set s = new HashSet();
String []a = tt.split(" ");
for(int i=0;i<a.length;i++)
{
if(s.contains(a[i]))
{
System.out.println("重复值:"+i+"-------"+a[i]);
}
s.add(a[i]);
}
System.out.println(s.size());
}}199
重复值:10-------122345
198
222
重复值:8-------132245
重复值:9-------132254
重复值:10-------132425
重复值:11-------132452
重复值:12-------132524
重复值:13-------132542
重复值:16-------142325
重复值:17-------142523
重复值:20-------143225
重复值:21-------143252
重复值:28-------152234
重复值:29-------152243
重复值:30-------152324
重复值:31-------152342
重复值:32-------152423
重复值:33-------152432
重复值:68-------221345
重复值:69-------221543
重复值:70-------231245
重复值:71-------231254
重复值:72-------231425
重复值:73-------231452
重复值:74-------231524
重复值:75-------231542
重复值:76-------232145
重复值:77-------232154
重复值:78-------232415
重复值:79-------232451
重复值:80-------232514
重复值:81-------232541
重复值:82-------241325
重复值:83-------241523
重复值:84-------242315
重复值:85-------242513
重复值:86-------243125
重复值:87-------243152
重复值:88-------243215
重复值:89-------243251
重复值:90-------251234
重复值:91-------251243
重复值:92-------251324
重复值:93-------251342
重复值:94-------251423
重复值:95-------251432
重复值:96-------252134
重复值:97-------252143
重复值:98-------252314
重复值:99-------252341
重复值:100-------252413
重复值:101-------252431
重复值:108-------321245
重复值:109-------321254
重复值:110-------321425
重复值:111-------321452
重复值:112-------321524
重复值:113-------321542
重复值:122-------341225
重复值:123-------341252
重复值:125-------341522
重复值:132-------342125
重复值:133-------342152
重复值:134-------342215
重复值:135-------342251
重复值:136-------342512
重复值:137-------342521
重复值:140-------421325
重复值:141-------421523
重复值:146-------431225
重复值:147-------431252
重复值:149-------431522
重复值:156-------432125
重复值:157-------432152
重复值:158-------432215
重复值:159-------432251
重复值:160-------432512
重复值:161-------432521
重复值:164-------451223
重复值:165-------451232
重复值:167-------451322
重复值:174-------452123
重复值:175-------452132
重复值:176-------452213
重复值:177-------452231
重复值:178-------452312
重复值:179-------452321
重复值:186-------521234
重复值:187-------521243
重复值:188-------521324
重复值:189-------521342
重复值:190-------521423
重复值:191-------521432
重复值:200-------541223
重复值:201-------541232
重复值:203-------541322
重复值:210-------542123
重复值:211-------542132
重复值:212-------542213
重复值:213-------542231
重复值:214-------542312
重复值:215-------542321
重复值:217-------543122
重复值:220-------543212
重复值:221-------543221
119
import java.util.Vector;public class TTTT {
public static void main(String[]args)
{ boolean b1=true;
Vector v=new Vector();
int ii[]=new int[]{1,2,2,3,4,5};
//Set ss= new HashSet();
int a=0;
for(int i=0;i<ii.length;i++)
{
for(int j=0;j<ii.length;j++)
{
for(int k=0;k<ii.length;k++)
{
for(int l=0;l<ii.length;l++)
{
for(int m=0;m<ii.length;m++)
{
for(int n=0;n<ii.length;n++)
{
if( i!=j&&i!=k&&i!=l&&i!=m&&i!=n
&& j!=k&&j!=l&&j!=m&&j!=n
&& k!=l&&k!=m&&k!=n
&& l!=m&&l!=n
&& m!=n)
{
String str=ii[i]+""+ii[j]+""+ii[k]+""+ii[l]+""+ii[m]+""+ii[n];
if(!str.matches("\\d\\d4\\d\\d\\d"))
{
if(!str.matches("[\\d]*35[\\d]*|[\\d]*53[\\d]*"))
{
if(a>0)
{
for(int b=0;b<v.size();b++)
{
if(v.elementAt(b).equals(str))
{ b1=false;
break;
}
} if(b1)
{
v.addElement(str);
a++;
System.out.print(str+" ");
}
else
{
b1=true;
}
}
else
{ v.addElement(str);
a++;
System.out.print(str+" ");
}
}
}
}
}
}
}
}
}
}System.out.println("");
System.out.print(a);
// for(int b=1;b<v.size();b++)
// {
// for(int i=0;i<b;i++)
// {
// if(v.elementAt(b).toString().equals(v.elementAt(i).toString()))
// {
// System.out.println("有重复"+v.elementAt(b));
// }
// }
// // System.out.println(v.size());
//
// }
}
}
总共198
122345 122543 123245 123254 123425 123452 125234 125243 125423 125432
132245 132254 132425 132452 132524 132542 142325 142523 143225 143252
145223 145232 152234 152243 152324 152342 152423 152432 212345 212543
213245 213254 213425 213452 215234 215243 215423 215432 221345 221543
223145 223154 223415 223451 225134 225143 225413 225431 231245 231254
231425 231452 231524 231542 232145 232154 232415 232451 232514 232541
241325 241523 242315 242513 243125 243152 243215 243251 245123 245132
245213 245231 251234 251243 251324 251342 251423 251432 252134 252143
252314 252341 252413 252431 312245 312254 312425 312452 312524 312542
315224 315242 315422 321245 321254 321425 321452 321524 321542 322145
322154 322415 322451 322514 322541 325124 325142 325214 325241 325412
325421 341225 341252 341522 342125 342152 342215 342251 342512 342521
345122 345212 345221 412325 412523 413225 413252 415223 415232 421325
421523 422315 422513 423125 423152 423215 423251 425123 425132 425213
425231 431225 431252 431522 432125 432152 432215 432251 432512 432521
451223 451232 451322 452123 452132 452213 452231 452312 452321 512234
512243 512324 512342 512423 512432 513224 513242 513422 521234 521243
521324 521342 521423 521432 522134 522143 522314 522341 522413 522431
523124 523142 523214 523241 523412 523421 541223 541232 541322 542123
542132 542213 542231 542312 542321 543122 543212 543221
这是我在控制台下的全部代码!
#include"iostream.h"
void main()
{
int iiii=0;
int data[505];
cout<<"输出1,2,2,3,4,5的所有排列组合,4不能在第三位,3和5不能相邻"<<endl;
int num=0;
char strs[]={'2','2','4','3','1','5'};
char str[7];
str[6]='\0';
int pos=-1;//3或者5所在的第一个位置
for(int i0=1;i0<=5;i0++)//1
{
if(i0==3 ||i0==5)
pos=i0;
str[0]=strs[i0];
int i1=0;
while(i1<6)//2
{
if(i1!=i0)
{
if(i1==3 ||i1==5)//处理3和5相邻的情况
{
if(pos==-1)
pos=i1;
else
if(pos-i1==1 || i1-pos==1)
{
i1++;
continue;
}
}
str[1]=strs[i1];
int i2=0;
while(i2<6)//3
{
if(i2!=i0 && i2!=i1 && i2!=2)//第三位不能是4
{
if(i2==3 ||i2==5)////处理3和5相邻的情况
{
if(pos==-1)
pos=i2;
else
if(pos-i2==1 || i2-pos==1)
{
i2++;
continue;
}
}
str[2]=strs[i2];
int i3=0;
while(i3<6)//4
{
if(i3!=i0 && i3!=i1 && i3!=i2)
{
if(i3==3 ||i3==5)////处理3和5相邻的情况
{
if(pos==-1)
pos=i3;
else
if(pos-i3==1 || i3-pos==1)
{
i3++;
continue;
}
}
str[3]=strs[i3];
int i4=0;
while(i4<6)//5
{
if(i4!=i0 && i4!=i1 && i4!=i2 && i4!=i3)
{
if(i4==3 ||i4==5)////处理3和5相邻的情况
{
if(pos==-1)
pos=i4;
else
if(pos-i4==1 || i4-pos==1)
{
i4++;
continue;
}
}
str[4]=strs[i4];
int i5=0;
while(i5<6)//6
{
if(i5!=i0 && i5!=i1 && i5!=i2 && i5!=i3 && i5!=i4)
{
if(i5==3 ||i5==5)////处理3和5相邻的情况
{
if(pos==-1)
pos=i5;
else
if(pos-i5==1 || i5-pos==1)
{
i5++;
continue;
}
}
str[5]=strs[i5];
cout<<str<<endl;
/*---------------------验证有没有重复的数-----------------
int tem=(str[5]-48)+(str[4]-48)*10+(str[3]-48)*100+(str[2]-48)*1000+(str[1]-48)*10000+(str[0]-48)*100000;
for(int ii=0;ii<num;ii++)
if(data[ii]==tem)
iiii=1;
data[num]=tem;
*///------------------------------------------------
num++;
if(i5==0)
i5++;
}
i5++;
}
if(i4==0)
i4++;
}
i4++;
}
if(i3==0)
i3++;
}
i3++;
}
if(i2==0)
i2++;
}
i2++;
}
if(i1==0)
i1++;
}
i1++;
}
pos=-1;
}
cout<<"符合条件的组合个数为"<<num<<"个"<<endl;
//if(iiii==1)
// cout<<"有重复的数"<<endl;
}这是我用MFC输出到文本的所有数字!
输出1,2,2,3,4,5的所有排列组合,4不能在第三位,3和5不能相邻
223415 223451 223145 223154 223541
223514 221435 221453 221345 221354
221543 221534 225431 225413 225341
225314 225143 225134 242315 242351
242135 242153 242531 242513 243215
243251 243125 243152 243521 243512
241235 241253 241325 241352 241523
241532 245231 245213 245321 245312
245123 245132 232415 232451 232145
232154 232541 232514 231245 231254
231425 231452 231524 231542 235241
235214 235421 235412 235124 235142
212435 212453 212345 212354 212543
212534 213245 213254 213425 213452
213524 213542 215243 215234 215423
215432 215324 215342 252431 252413
252341 252314 252143 252134 253241
253214 253421 253412 253124 253142
251243 251234 251423 251432 251324
251342 422315 422351 422135 422153
422531 422513 423215 423251 423125
423152 423521 423512 421235 421253
421325 421352 421523 421532 425231
425213 425321 425312 425123 425132
432215 432251 432125 432152 432521
432512 431225 431252 431522 435221
435212 435122 412235 412253 412325
412352 412523 412532 413225 413252
413522 415223 415232 415322 452231
452213 452321 452312 452123 452132
453221 453212 453122 451223 451232
451322 322415 322451 322145 322154
322541 322514 321245 321254 321425
321452 321524 321542 325241 325214
325421 325412 325124 325142 342215
342251 342125 342152 342521 342512
341225 341252 341522 345221 345212
345122 312245 312254 312425 312452
312524 312542 315224 315242 315422
352241 352214 352421 352412 352124
352142 351224 351242 351422 122435
122453 122345 122354 122543 122534
123245 123254 123425 123452 123524
123542 125243 125234 125423 125432
125324 125342 142235 142253 142325
142352 142523 142532 143225 143252
143522 145223 145232 145322 132245
132254 132425 132452 132524 132542
135224 135242 135422 152243 152234
152423 152432 152324 152342 153224
153242 153422 522431 522413 522341
522314 522143 522134 523241 523214
523421 523412 523124 523142 521243
521234 521423 521432 521324 521342
542231 542213 542321 542312 542123
542132 543221 543212 543122 541223
541232 541322 532241 532214 532421
532412 532124 532142 531224 531242
531422 512243 512234 512423 512432
512324 512342 513224 513242 513422 符合条件的组合个数为 300个
if(i4==0)
i4++;
这个代码是防止再次取第二个2,从而能保证结果不重复!
223514 221435 221453 221345 221354 3和5相邻不?
import java.util.List;/**
* 输出1,2,2,3,4,5的所有排列组合,4不能在第三位,3和5不能相邻
*
* @author JHF Team <[email protected]>
*
*
* @copyright 2006-2007, BestWiz(Dalian) Co.,Ltd
*/
public class MyTest { /**
* 将字符数组中的元素循环放入List<String>中返回
*
* @return List<String>
* @param String[]
* str
* @author guoqiang <[email protected]>
*/
public static List<String> getList(String[] str) { List<String> list = new ArrayList<String>();
for (int i = 0; i < str.length; i++) {
list.add(str[i]);
}
return list;
} /**
* 循环遍历List中的元素,得出所有的组合结果,并过滤掉第三位是“4”的组合。然後將結果放入List<String[]>中返回
*
* @return List<String[]>
* @param List
* <String> list
* @author guoqiang <[email protected]>
*/
public static List<String[]> getNewList(List<String> list) { List<String[]> newlist = new ArrayList<String[]>();
for (int i1 = 0; i1 < list.size(); i1++) {
for (int i2 = 0; i2 < list.size(); i2++) {
for (int i3 = 0; i3 < list.size(); i3++) {
for (int i4 = 0; i4 < list.size(); i4++) {
for (int i5 = 0; i5 < list.size(); i5++) {
for (int i6 = 0; i6 < list.size(); i6++) {
if ((i1 != i2 && i1 != i3 && i1 != i4 && i1 != i5 && i1 != i6)
&& (i2 != i1 && i2 != i3 && i2 != i4 && i2 != i5 && i2 != i6)
&& (i3 != i1 && i3 != i2 && i3 != i4 && i3 != i5 && i3 != i6)
&& (i4 != i1 && i4 != i2 && i4 != i3 && i4 != i5 && i4 != i6)
&& (i5 != i1 && i5 != i2 && i5 != i3 && i5 != i4 && i5 != i6)
&& (i6 != i1 && i6 != i2 && i6 != i3 && i6 != i4 && i6 != i5)) {
String[] newStr = { list.get(i1), list.get(i2), list.get(i3), list.get(i4),
list.get(i5), list.get(i6) };
if ((!"4".equals(newStr[2])))
newlist.add(newStr);
}
}
}
}
}
}
}
return newlist;
} /**
* 将结果集中有3、5相连的过滤掉,然后将最后结果打印。
*
* @return
* @param List
* <String[]> newList
* @author guoqiang <[email protected]>
*/
public static void printList(List<String[]> newList) { int count = 0;
for (int i = 0; i < newList.size(); i++) {
String str = newList.get(i)[0] + "," + newList.get(i)[1] + "," + newList.get(i)[2] + ","
+ newList.get(i)[3] + "," + newList.get(i)[4] + "," + newList.get(i)[5];
if (!(str.matches(".*(3,5).*") || str.matches(".*(5,3).*"))) {
count++;
System.out.println("No" + count + ": " + str);
}
}
} /**
* main函数
*
* @return
* @param String[]
* args
* @author guoqiang <[email protected]>
*/
public static void main(String[] args) { String[] str = { "1", "2", "2", "3", "4", "5" };
List<String> list = getList(str);
List<String[]> newList = getNewList(list);
printList(newList);
}
}
No2: 1,2,2,5,4,3
No3: 1,2,3,2,4,5
No4: 1,2,3,2,5,4
No5: 1,2,3,4,2,5
No6: 1,2,3,4,5,2
No7: 1,2,5,2,3,4
No8: 1,2,5,2,4,3
No9: 1,2,5,4,2,3
No10: 1,2,5,4,3,2
No11: 1,2,2,3,4,5
No12: 1,2,2,5,4,3
No13: 1,2,3,2,4,5
No14: 1,2,3,2,5,4
No15: 1,2,3,4,2,5
No16: 1,2,3,4,5,2
No17: 1,2,5,2,3,4
No18: 1,2,5,2,4,3
No19: 1,2,5,4,2,3
No20: 1,2,5,4,3,2
No21: 1,3,2,2,4,5
No22: 1,3,2,2,5,4
No23: 1,3,2,4,2,5
No24: 1,3,2,4,5,2
No25: 1,3,2,5,2,4
No26: 1,3,2,5,4,2
No27: 1,3,2,2,4,5
No28: 1,3,2,2,5,4
No29: 1,3,2,4,2,5
No30: 1,3,2,4,5,2
No31: 1,3,2,5,2,4
No32: 1,3,2,5,4,2
No33: 1,4,2,3,2,5
No34: 1,4,2,5,2,3
No35: 1,4,2,3,2,5
No36: 1,4,2,5,2,3
No37: 1,4,3,2,2,5
No38: 1,4,3,2,5,2
No39: 1,4,3,2,2,5
No40: 1,4,3,2,5,2
No41: 1,4,5,2,2,3
No42: 1,4,5,2,3,2
No43: 1,4,5,2,2,3
No44: 1,4,5,2,3,2
No45: 1,5,2,2,3,4
No46: 1,5,2,2,4,3
No47: 1,5,2,3,2,4
No48: 1,5,2,3,4,2
No49: 1,5,2,4,2,3
No50: 1,5,2,4,3,2
No51: 1,5,2,2,3,4
No52: 1,5,2,2,4,3
No53: 1,5,2,3,2,4
No54: 1,5,2,3,4,2
No55: 1,5,2,4,2,3
No56: 1,5,2,4,3,2
No57: 2,1,2,3,4,5
No58: 2,1,2,5,4,3
No59: 2,1,3,2,4,5
No60: 2,1,3,2,5,4
No61: 2,1,3,4,2,5
No62: 2,1,3,4,5,2
No63: 2,1,5,2,3,4
No64: 2,1,5,2,4,3
No65: 2,1,5,4,2,3
No66: 2,1,5,4,3,2
No67: 2,2,1,3,4,5
No68: 2,2,1,5,4,3
No69: 2,2,3,1,4,5
No70: 2,2,3,1,5,4
No71: 2,2,3,4,1,5
No72: 2,2,3,4,5,1
No73: 2,2,5,1,3,4
No74: 2,2,5,1,4,3
No75: 2,2,5,4,1,3
No76: 2,2,5,4,3,1
No77: 2,3,1,2,4,5
No78: 2,3,1,2,5,4
No79: 2,3,1,4,2,5
No80: 2,3,1,4,5,2
No81: 2,3,1,5,2,4
No82: 2,3,1,5,4,2
No83: 2,3,2,1,4,5
No84: 2,3,2,1,5,4
No85: 2,3,2,4,1,5
No86: 2,3,2,4,5,1
No87: 2,3,2,5,1,4
No88: 2,3,2,5,4,1
No89: 2,4,1,3,2,5
No90: 2,4,1,5,2,3
No91: 2,4,2,3,1,5
No92: 2,4,2,5,1,3
No93: 2,4,3,1,2,5
No94: 2,4,3,1,5,2
No95: 2,4,3,2,1,5
No96: 2,4,3,2,5,1
No97: 2,4,5,1,2,3
No98: 2,4,5,1,3,2
No99: 2,4,5,2,1,3
No100: 2,4,5,2,3,1
No101: 2,5,1,2,3,4
No102: 2,5,1,2,4,3
No103: 2,5,1,3,2,4
No104: 2,5,1,3,4,2
No105: 2,5,1,4,2,3
No106: 2,5,1,4,3,2
No107: 2,5,2,1,3,4
No108: 2,5,2,1,4,3
No109: 2,5,2,3,1,4
No110: 2,5,2,3,4,1
No111: 2,5,2,4,1,3
No112: 2,5,2,4,3,1
No113: 2,1,2,3,4,5
No114: 2,1,2,5,4,3
No115: 2,1,3,2,4,5
No116: 2,1,3,2,5,4
No117: 2,1,3,4,2,5
No118: 2,1,3,4,5,2
No119: 2,1,5,2,3,4
No120: 2,1,5,2,4,3
No121: 2,1,5,4,2,3
No122: 2,1,5,4,3,2
No123: 2,2,1,3,4,5
No124: 2,2,1,5,4,3
No125: 2,2,3,1,4,5
No126: 2,2,3,1,5,4
No127: 2,2,3,4,1,5
No128: 2,2,3,4,5,1
No129: 2,2,5,1,3,4
No130: 2,2,5,1,4,3
No131: 2,2,5,4,1,3
No132: 2,2,5,4,3,1
No133: 2,3,1,2,4,5
No134: 2,3,1,2,5,4
No135: 2,3,1,4,2,5
No136: 2,3,1,4,5,2
No137: 2,3,1,5,2,4
No138: 2,3,1,5,4,2
No139: 2,3,2,1,4,5
No140: 2,3,2,1,5,4
No141: 2,3,2,4,1,5
No142: 2,3,2,4,5,1
No143: 2,3,2,5,1,4
No144: 2,3,2,5,4,1
No145: 2,4,1,3,2,5
No146: 2,4,1,5,2,3
No147: 2,4,2,3,1,5
No148: 2,4,2,5,1,3
No149: 2,4,3,1,2,5
No150: 2,4,3,1,5,2
No151: 2,4,3,2,1,5
No152: 2,4,3,2,5,1
No153: 2,4,5,1,2,3
No154: 2,4,5,1,3,2
No155: 2,4,5,2,1,3
No156: 2,4,5,2,3,1
No157: 2,5,1,2,3,4
No158: 2,5,1,2,4,3
No159: 2,5,1,3,2,4
No160: 2,5,1,3,4,2
No161: 2,5,1,4,2,3
No162: 2,5,1,4,3,2
No163: 2,5,2,1,3,4
No164: 2,5,2,1,4,3
No165: 2,5,2,3,1,4
No166: 2,5,2,3,4,1
No167: 2,5,2,4,1,3
No168: 2,5,2,4,3,1
No169: 3,1,2,2,4,5
No170: 3,1,2,2,5,4
No171: 3,1,2,4,2,5
No172: 3,1,2,4,5,2
No173: 3,1,2,5,2,4
No174: 3,1,2,5,4,2
No175: 3,1,2,2,4,5
No176: 3,1,2,2,5,4
No177: 3,1,2,4,2,5
No178: 3,1,2,4,5,2
No179: 3,1,2,5,2,4
No180: 3,1,2,5,4,2
No181: 3,1,5,2,2,4
No182: 3,1,5,2,4,2
No183: 3,1,5,2,2,4
No184: 3,1,5,2,4,2
No185: 3,1,5,4,2,2
No186: 3,1,5,4,2,2
No187: 3,2,1,2,4,5
No188: 3,2,1,2,5,4
No189: 3,2,1,4,2,5
No190: 3,2,1,4,5,2
No191: 3,2,1,5,2,4
No192: 3,2,1,5,4,2
No193: 3,2,2,1,4,5
No194: 3,2,2,1,5,4
No195: 3,2,2,4,1,5
No196: 3,2,2,4,5,1
No197: 3,2,2,5,1,4
No198: 3,2,2,5,4,1
No199: 3,2,5,1,2,4
No200: 3,2,5,1,4,2
No201: 3,2,5,2,1,4
No202: 3,2,5,2,4,1
No203: 3,2,5,4,1,2
No204: 3,2,5,4,2,1
No205: 3,2,1,2,4,5
No206: 3,2,1,2,5,4
No207: 3,2,1,4,2,5
No208: 3,2,1,4,5,2
No209: 3,2,1,5,2,4
No210: 3,2,1,5,4,2
No211: 3,2,2,1,4,5
No212: 3,2,2,1,5,4
No213: 3,2,2,4,1,5
No214: 3,2,2,4,5,1
No215: 3,2,2,5,1,4
No216: 3,2,2,5,4,1
No217: 3,2,5,1,2,4
No218: 3,2,5,1,4,2
No219: 3,2,5,2,1,4
No220: 3,2,5,2,4,1
No221: 3,2,5,4,1,2
No222: 3,2,5,4,2,1
No223: 3,4,1,2,2,5
No224: 3,4,1,2,5,2
No225: 3,4,1,2,2,5
No226: 3,4,1,2,5,2
No227: 3,4,1,5,2,2
No228: 3,4,1,5,2,2
No229: 3,4,2,1,2,5
No230: 3,4,2,1,5,2
No231: 3,4,2,2,1,5
No232: 3,4,2,2,5,1
No233: 3,4,2,5,1,2
No234: 3,4,2,5,2,1
No235: 3,4,2,1,2,5
No236: 3,4,2,1,5,2
No237: 3,4,2,2,1,5
No238: 3,4,2,2,5,1
No239: 3,4,2,5,1,2
No240: 3,4,2,5,2,1
No241: 3,4,5,1,2,2
No242: 3,4,5,1,2,2
No243: 3,4,5,2,1,2
No244: 3,4,5,2,2,1
No245: 3,4,5,2,1,2
No246: 3,4,5,2,2,1
No247: 4,1,2,3,2,5
No248: 4,1,2,5,2,3
No249: 4,1,2,3,2,5
No250: 4,1,2,5,2,3
No251: 4,1,3,2,2,5
No252: 4,1,3,2,5,2
No253: 4,1,3,2,2,5
No254: 4,1,3,2,5,2
No255: 4,1,5,2,2,3
No256: 4,1,5,2,3,2
No257: 4,1,5,2,2,3
No258: 4,1,5,2,3,2
No259: 4,2,1,3,2,5
No260: 4,2,1,5,2,3
No261: 4,2,2,3,1,5
No262: 4,2,2,5,1,3
No263: 4,2,3,1,2,5
No264: 4,2,3,1,5,2
No265: 4,2,3,2,1,5
No266: 4,2,3,2,5,1
No267: 4,2,5,1,2,3
No268: 4,2,5,1,3,2
No269: 4,2,5,2,1,3
No270: 4,2,5,2,3,1
No271: 4,2,1,3,2,5
No272: 4,2,1,5,2,3
No273: 4,2,2,3,1,5
No274: 4,2,2,5,1,3
No275: 4,2,3,1,2,5
No276: 4,2,3,1,5,2
No277: 4,2,3,2,1,5
No278: 4,2,3,2,5,1
No279: 4,2,5,1,2,3
No280: 4,2,5,1,3,2
No281: 4,2,5,2,1,3
No282: 4,2,5,2,3,1
No283: 4,3,1,2,2,5
No284: 4,3,1,2,5,2
No285: 4,3,1,2,2,5
No286: 4,3,1,2,5,2
No287: 4,3,1,5,2,2
No288: 4,3,1,5,2,2
No289: 4,3,2,1,2,5
No290: 4,3,2,1,5,2
No291: 4,3,2,2,1,5
No292: 4,3,2,2,5,1
No293: 4,3,2,5,1,2
No294: 4,3,2,5,2,1
No295: 4,3,2,1,2,5
No296: 4,3,2,1,5,2
No297: 4,3,2,2,1,5
No298: 4,3,2,2,5,1
No299: 4,3,2,5,1,2
No300: 4,3,2,5,2,1
No301: 4,5,1,2,2,3
No302: 4,5,1,2,3,2
No303: 4,5,1,2,2,3
No304: 4,5,1,2,3,2
No305: 4,5,1,3,2,2
No306: 4,5,1,3,2,2
No307: 4,5,2,1,2,3
No308: 4,5,2,1,3,2
No309: 4,5,2,2,1,3
No310: 4,5,2,2,3,1
No311: 4,5,2,3,1,2
No312: 4,5,2,3,2,1
No313: 4,5,2,1,2,3
No314: 4,5,2,1,3,2
No315: 4,5,2,2,1,3
No316: 4,5,2,2,3,1
No317: 4,5,2,3,1,2
No318: 4,5,2,3,2,1
No319: 5,1,2,2,3,4
No320: 5,1,2,2,4,3
No321: 5,1,2,3,2,4
No322: 5,1,2,3,4,2
No323: 5,1,2,4,2,3
No324: 5,1,2,4,3,2
No325: 5,1,2,2,3,4
No326: 5,1,2,2,4,3
No327: 5,1,2,3,2,4
No328: 5,1,2,3,4,2
No329: 5,1,2,4,2,3
No330: 5,1,2,4,3,2
No331: 5,1,3,2,2,4
No332: 5,1,3,2,4,2
No333: 5,1,3,2,2,4
No334: 5,1,3,2,4,2
No335: 5,1,3,4,2,2
No336: 5,1,3,4,2,2
No337: 5,2,1,2,3,4
No338: 5,2,1,2,4,3
No339: 5,2,1,3,2,4
No340: 5,2,1,3,4,2
No341: 5,2,1,4,2,3
No342: 5,2,1,4,3,2
No343: 5,2,2,1,3,4
No344: 5,2,2,1,4,3
No345: 5,2,2,3,1,4
No346: 5,2,2,3,4,1
No347: 5,2,2,4,1,3
No348: 5,2,2,4,3,1
No349: 5,2,3,1,2,4
No350: 5,2,3,1,4,2
No351: 5,2,3,2,1,4
No352: 5,2,3,2,4,1
No353: 5,2,3,4,1,2
No354: 5,2,3,4,2,1
No355: 5,2,1,2,3,4
No356: 5,2,1,2,4,3
No357: 5,2,1,3,2,4
No358: 5,2,1,3,4,2
No359: 5,2,1,4,2,3
No360: 5,2,1,4,3,2
No361: 5,2,2,1,3,4
No362: 5,2,2,1,4,3
No363: 5,2,2,3,1,4
No364: 5,2,2,3,4,1
No365: 5,2,2,4,1,3
No366: 5,2,2,4,3,1
No367: 5,2,3,1,2,4
No368: 5,2,3,1,4,2
No369: 5,2,3,2,1,4
No370: 5,2,3,2,4,1
No371: 5,2,3,4,1,2
No372: 5,2,3,4,2,1
No373: 5,4,1,2,2,3
No374: 5,4,1,2,3,2
No375: 5,4,1,2,2,3
No376: 5,4,1,2,3,2
No377: 5,4,1,3,2,2
No378: 5,4,1,3,2,2
No379: 5,4,2,1,2,3
No380: 5,4,2,1,3,2
No381: 5,4,2,2,1,3
No382: 5,4,2,2,3,1
No383: 5,4,2,3,1,2
No384: 5,4,2,3,2,1
No385: 5,4,2,1,2,3
No386: 5,4,2,1,3,2
No387: 5,4,2,2,1,3
No388: 5,4,2,2,3,1
No389: 5,4,2,3,1,2
No390: 5,4,2,3,2,1
No391: 5,4,3,1,2,2
No392: 5,4,3,1,2,2
No393: 5,4,3,2,1,2
No394: 5,4,3,2,2,1
No395: 5,4,3,2,1,2
No396: 5,4,3,2,2,1
No34: 1,4,2,5,2,3
No35: 1,4,2,3,2,5
No36: 1,4,2,5,2,3
void main()
{
int iiii=0;
int data[505];
cout <<"输出1,2,2,3,4,5的所有排列组合,4不能在第三位,3和5不能相邻" <<endl;
int num=0;
char strs[]={'2','2','4','3','1','5'};
char str[7];
str[6]='\0';
int pos=-1;//3或者5所在的第一个位置
for(int i0=1;i0 <=5;i0++)//1
{
if((i0==3)||(i0==5))
pos=0;
str[0]=strs[i0];
int i1=0;
while(i1 <6)//2
{
if(i1!=i0)
{
if((i1==3)||(i1==5))//处理3和5相邻的情况
{
if(pos==-1)
pos=1;
else
if(pos==0)
{
i1++;
continue;
}
}
str[1]=strs[i1];
int i2=0;
while(i2 <6)//3
{
if(i2!=i0 && i2!=i1 && i2!=2)//第三位不能是4
{
if((i2==3)||(i2==5))////处理3和5相邻的情况
{
if(pos==-1)
pos=2;
else
if(pos==1)
{
i2++;
continue;
}
}
str[2]=strs[i2];
int i3=0;
while(i3 <6)//4
{
if(i3!=i0 && i3!=i1 && i3!=i2)
{
if((i3==3)||(i3==5))////处理3和5相邻的情况
{
if(pos==-1)
pos=3;
else
if(pos==2)
{
i3++;
continue;
}
}
str[3]=strs[i3];
int i4=0;
while(i4 <6)//5
{
if(i4!=i0 && i4!=i1 && i4!=i2 && i4!=i3)
{
if((i4==3)||(i4==5))////处理3和5相邻的情况
{
if(pos==-1)
pos=4;
else
if(pos==3)
{
i4++;
continue;
}
}
str[4]=strs[i4];
int i5=0;
while(i5 <6)//6
{
if(i5!=i0 && i5!=i1 && i5!=i2 && i5!=i3 && i5!=i4)
{
if((i5==3)||(i5==5))////处理3和5相邻的情况
{
if(pos==4)
{
i5++;
continue;
}
}
str[5]=strs[i5];
cout <<str <<endl;
/*//---------------------验证有没有重复的数-----------------
for(int x=0;x<5;x++)
if((str[x]-48+str[x+1]-48)==8)
iiii++;
int tem=(str[5]-48)+(str[4]-48)*10+(str[3]-48)*100+(str[2]-48)*1000+(str[1]-48)*10000+(str[0]-48)*100000;
for(int ii=0;ii<num;ii++)
if(data[ii]==tem)
iiii=1;
data[num]=tem;
*///------------------------------------------------
num++;
if(i5==0)
i5++;
}
i5++;
}
if(4==pos)
pos=-1;
if(i4==0)
i4++;
}
i4++;
}
if(3==pos)
pos=-1;
if(i3==0)
i3++;
}
i3++;
}
if(2==pos)
pos=-1;
if(i2==0)
i2++;
}
i2++;
}
if(1==pos)
pos=-1;
if(i1==0)
i1++;
}
i1++;
}
pos=-1;
}
cout <<"符合条件的组合个数为" <<num <<"个" <<endl;
//if(iiii!=0)
//cout<<"有重复的数"<<iiii<<endl;
} 用MFC把结果输出到文本:输出1,2,2,3,4,5的所有排列组合,4不能在第三位,3和5不能相邻223415 223451 223145 223154 221345
221543 225431 225413 225143 225134
242315 242513 243215 243251 243125
243152 241325 241523 245231 245213
245123 245132 232415 232451 232145
232154 232541 232514 231245 231254
231425 231452 231524 231542 212345
212543 213245 213254 213425 213452
215243 215234 215423 215432 252431
252413 252341 252314 252143 252134
251243 251234 251423 251432 251324
251342 422315 422513 423215 423251
423125 423152 421325 421523 425231
425213 425123 425132 432215 432251
432125 432152 432521 432512 431225
431252 431522 412325 412523 413225
413252 415223 415232 452231 452213
452321 452312 452123 452132 451223
451232 451322 322415 322451 322145
322154 322541 322514 321245 321254
321425 321452 321524 321542 325241
325214 325421 325412 325124 325142
342215 342251 342125 342152 342521
342512 341225 341252 341522 345221
345212 345122 312245 312254 312425
312452 312524 312542 315224 315242
315422 122345 122543 123245 123254
123425 123452 125243 125234 125423
125432 142325 142523 143225 143252
145223 145232 132245 132254 132425
132452 132524 132542 152243 152234
152423 152432 152324 152342 522431
522413 522341 522314 522143 522134
523241 523214 523421 523412 523124
523142 521243 521234 521423 521432
521324 521342 542231 542213 542321
542312 542123 542132 543221 543212
543122 541223 541232 541322 512243
512234 512423 512432 512324 512342
513224 513242 513422
符合要求的组合个数为198个
import java.util.Arrays;
import java.util.List;/**
* 输出1,2,2,3,4,5的所有排列组合,4不能在第三位,3和5不能相邻
*
* @author JHF Team <[email protected]>
*
*
* @copyright 2006-2007, BestWiz(Dalian) Co.,Ltd
*/
public class MyTest { /**
* 将字符数组中的元素循环放入List<String>中返回
*
* @return List<String>
* @param String[]
* str
* @author guoqiang <[email protected]>
*/
public static List<String> getList(String[] str) { List<String> list = new ArrayList<String>();
for (int i = 0; i < str.length; i++) {
list.add(str[i]);
}
return list;
} /**
* 循环遍历List中的元素,得出所有的组合结果,并过滤掉第三位是“4”的组合。然後將結果放入List<String[]>中返回
*
* @return List<String[]>
* @param List
* <String> list
* @author guoqiang <[email protected]>
*/
public static List<String[]> getNewList(List<String> list) { List<String[]> newlist = new ArrayList<String[]>();
for (int i1 = 0; i1 < list.size(); i1++) {
for (int i2 = 0; i2 < list.size(); i2++) {
for (int i3 = 0; i3 < list.size(); i3++) {
for (int i4 = 0; i4 < list.size(); i4++) {
for (int i5 = 0; i5 < list.size(); i5++) {
for (int i6 = 0; i6 < list.size(); i6++) {
if ((i1 != i2 && i1 != i3 && i1 != i4 && i1 != i5 && i1 != i6)
&& (i2 != i1 && i2 != i3 && i2 != i4 && i2 != i5 && i2 != i6)
&& (i3 != i1 && i3 != i2 && i3 != i4 && i3 != i5 && i3 != i6)
&& (i4 != i1 && i4 != i2 && i4 != i3 && i4 != i5 && i4 != i6)
&& (i5 != i1 && i5 != i2 && i5 != i3 && i5 != i4 && i5 != i6)
&& (i6 != i1 && i6 != i2 && i6 != i3 && i6 != i4 && i6 != i5)) {
String[] newStr = { list.get(i1), list.get(i2), list.get(i3), list.get(i4),
list.get(i5), list.get(i6) };
if ((newlist.size() == 0) && (!"4".equals(newStr[2])))
newlist.add(newStr);
boolean b = true;
if ((newlist.size() > 0) && (!"4".equals(newStr[2]))) {
for (int i = 0; i < newlist.size(); i++) {
if (Arrays.equals(newStr, newlist.get(i)))
b = false;
}
if (b)
newlist.add(newStr);
}
}
}
}
}
}
}
}
return newlist;
} /**
* 将结果集中有3、5相连的过滤掉,然后将最后结果打印。
*
* @return
* @param List
* <String[]> newList
* @author guoqiang <[email protected]>
*/
public static void printList(List<String[]> newList) { int count = 0;
for (int i = 0; i < newList.size(); i++) {
String str = newList.get(i)[0] + "," + newList.get(i)[1] + "," + newList.get(i)[2] + ","
+ newList.get(i)[3] + "," + newList.get(i)[4] + "," + newList.get(i)[5];
if (!(str.matches(".*(3,5).*") || str.matches(".*(5,3).*"))) {
count++;
System.out.println("No" + count + ": " + str);
}
}
} /**
* main函数
*
* @return
* @param String[]
* args
* @author guoqiang <[email protected]>
*/
public static void main(String[] args) { String[] str = { "1", "2", "2", "3", "4", "5" };
List<String> list = getList(str);
List<String[]> newList = getNewList(list);
printList(newList);
}
}
No2: 1,2,2,5,4,3
No3: 1,2,3,2,4,5
No4: 1,2,3,2,5,4
No5: 1,2,3,4,2,5
No6: 1,2,3,4,5,2
No7: 1,2,5,2,3,4
No8: 1,2,5,2,4,3
No9: 1,2,5,4,2,3
No10: 1,2,5,4,3,2
No11: 1,3,2,2,4,5
No12: 1,3,2,2,5,4
No13: 1,3,2,4,2,5
No14: 1,3,2,4,5,2
No15: 1,3,2,5,2,4
No16: 1,3,2,5,4,2
No17: 1,4,2,3,2,5
No18: 1,4,2,5,2,3
No19: 1,4,3,2,2,5
No20: 1,4,3,2,5,2
No21: 1,4,5,2,2,3
No22: 1,4,5,2,3,2
No23: 1,5,2,2,3,4
No24: 1,5,2,2,4,3
No25: 1,5,2,3,2,4
No26: 1,5,2,3,4,2
No27: 1,5,2,4,2,3
No28: 1,5,2,4,3,2
No29: 2,1,2,3,4,5
No30: 2,1,2,5,4,3
No31: 2,1,3,2,4,5
No32: 2,1,3,2,5,4
No33: 2,1,3,4,2,5
No34: 2,1,3,4,5,2
No35: 2,1,5,2,3,4
No36: 2,1,5,2,4,3
No37: 2,1,5,4,2,3
No38: 2,1,5,4,3,2
No39: 2,2,1,3,4,5
No40: 2,2,1,5,4,3
No41: 2,2,3,1,4,5
No42: 2,2,3,1,5,4
No43: 2,2,3,4,1,5
No44: 2,2,3,4,5,1
No45: 2,2,5,1,3,4
No46: 2,2,5,1,4,3
No47: 2,2,5,4,1,3
No48: 2,2,5,4,3,1
No49: 2,3,1,2,4,5
No50: 2,3,1,2,5,4
No51: 2,3,1,4,2,5
No52: 2,3,1,4,5,2
No53: 2,3,1,5,2,4
No54: 2,3,1,5,4,2
No55: 2,3,2,1,4,5
No56: 2,3,2,1,5,4
No57: 2,3,2,4,1,5
No58: 2,3,2,4,5,1
No59: 2,3,2,5,1,4
No60: 2,3,2,5,4,1
No61: 2,4,1,3,2,5
No62: 2,4,1,5,2,3
No63: 2,4,2,3,1,5
No64: 2,4,2,5,1,3
No65: 2,4,3,1,2,5
No66: 2,4,3,1,5,2
No67: 2,4,3,2,1,5
No68: 2,4,3,2,5,1
No69: 2,4,5,1,2,3
No70: 2,4,5,1,3,2
No71: 2,4,5,2,1,3
No72: 2,4,5,2,3,1
No73: 2,5,1,2,3,4
No74: 2,5,1,2,4,3
No75: 2,5,1,3,2,4
No76: 2,5,1,3,4,2
No77: 2,5,1,4,2,3
No78: 2,5,1,4,3,2
No79: 2,5,2,1,3,4
No80: 2,5,2,1,4,3
No81: 2,5,2,3,1,4
No82: 2,5,2,3,4,1
No83: 2,5,2,4,1,3
No84: 2,5,2,4,3,1
No85: 3,1,2,2,4,5
No86: 3,1,2,2,5,4
No87: 3,1,2,4,2,5
No88: 3,1,2,4,5,2
No89: 3,1,2,5,2,4
No90: 3,1,2,5,4,2
No91: 3,1,5,2,2,4
No92: 3,1,5,2,4,2
No93: 3,1,5,4,2,2
No94: 3,2,1,2,4,5
No95: 3,2,1,2,5,4
No96: 3,2,1,4,2,5
No97: 3,2,1,4,5,2
No98: 3,2,1,5,2,4
No99: 3,2,1,5,4,2
No100: 3,2,2,1,4,5
No101: 3,2,2,1,5,4
No102: 3,2,2,4,1,5
No103: 3,2,2,4,5,1
No104: 3,2,2,5,1,4
No105: 3,2,2,5,4,1
No106: 3,2,5,1,2,4
No107: 3,2,5,1,4,2
No108: 3,2,5,2,1,4
No109: 3,2,5,2,4,1
No110: 3,2,5,4,1,2
No111: 3,2,5,4,2,1
No112: 3,4,1,2,2,5
No113: 3,4,1,2,5,2
No114: 3,4,1,5,2,2
No115: 3,4,2,1,2,5
No116: 3,4,2,1,5,2
No117: 3,4,2,2,1,5
No118: 3,4,2,2,5,1
No119: 3,4,2,5,1,2
No120: 3,4,2,5,2,1
No121: 3,4,5,1,2,2
No122: 3,4,5,2,1,2
No123: 3,4,5,2,2,1
No124: 4,1,2,3,2,5
No125: 4,1,2,5,2,3
No126: 4,1,3,2,2,5
No127: 4,1,3,2,5,2
No128: 4,1,5,2,2,3
No129: 4,1,5,2,3,2
No130: 4,2,1,3,2,5
No131: 4,2,1,5,2,3
No132: 4,2,2,3,1,5
No133: 4,2,2,5,1,3
No134: 4,2,3,1,2,5
No135: 4,2,3,1,5,2
No136: 4,2,3,2,1,5
No137: 4,2,3,2,5,1
No138: 4,2,5,1,2,3
No139: 4,2,5,1,3,2
No140: 4,2,5,2,1,3
No141: 4,2,5,2,3,1
No142: 4,3,1,2,2,5
No143: 4,3,1,2,5,2
No144: 4,3,1,5,2,2
No145: 4,3,2,1,2,5
No146: 4,3,2,1,5,2
No147: 4,3,2,2,1,5
No148: 4,3,2,2,5,1
No149: 4,3,2,5,1,2
No150: 4,3,2,5,2,1
No151: 4,5,1,2,2,3
No152: 4,5,1,2,3,2
No153: 4,5,1,3,2,2
No154: 4,5,2,1,2,3
No155: 4,5,2,1,3,2
No156: 4,5,2,2,1,3
No157: 4,5,2,2,3,1
No158: 4,5,2,3,1,2
No159: 4,5,2,3,2,1
No160: 5,1,2,2,3,4
No161: 5,1,2,2,4,3
No162: 5,1,2,3,2,4
No163: 5,1,2,3,4,2
No164: 5,1,2,4,2,3
No165: 5,1,2,4,3,2
No166: 5,1,3,2,2,4
No167: 5,1,3,2,4,2
No168: 5,1,3,4,2,2
No169: 5,2,1,2,3,4
No170: 5,2,1,2,4,3
No171: 5,2,1,3,2,4
No172: 5,2,1,3,4,2
No173: 5,2,1,4,2,3
No174: 5,2,1,4,3,2
No175: 5,2,2,1,3,4
No176: 5,2,2,1,4,3
No177: 5,2,2,3,1,4
No178: 5,2,2,3,4,1
No179: 5,2,2,4,1,3
No180: 5,2,2,4,3,1
No181: 5,2,3,1,2,4
No182: 5,2,3,1,4,2
No183: 5,2,3,2,1,4
No184: 5,2,3,2,4,1
No185: 5,2,3,4,1,2
No186: 5,2,3,4,2,1
No187: 5,4,1,2,2,3
No188: 5,4,1,2,3,2
No189: 5,4,1,3,2,2
No190: 5,4,2,1,2,3
No191: 5,4,2,1,3,2
No192: 5,4,2,2,1,3
No193: 5,4,2,2,3,1
No194: 5,4,2,3,1,2
No195: 5,4,2,3,2,1
No196: 5,4,3,1,2,2
No197: 5,4,3,2,1,2
No198: 5,4,3,2,2,1
public class Com {
private Vector<String> numbers; private StringBuffer res = new StringBuffer();
private Vector<String> Result, midnumber, mid1, mid2, mid3, mid4, mid5; public Com() {
numbers = new Vector<String>();
numbers.addElement("1");
numbers.addElement("2");
numbers.addElement("2");
numbers.addElement("3");
numbers.addElement("4");
numbers.addElement("5");
Result = new Vector<String>();
midnumber = new Vector<String>();
mid1 = new Vector<String>();
mid2 = new Vector<String>();
mid3 = new Vector<String>();
mid4 = new Vector<String>();
mid5 = new Vector<String>();
midnumber = numbers;
for (int i = 0; i < 6; i++) { change(mid1, midnumber); mid1.removeElementAt(i);
for (int j = 0; j < 5; j++) { change(mid2, mid1);
mid2.removeElementAt(j);
for (int k = 0; k < 4; k++) { change(mid3, mid2);
mid3.removeElementAt(k);
for (int l = 0; l < 3; l++) { change(mid4, mid3);
mid4.removeElementAt(l);
for (int m = 0; m < 2; m++) {
res.append(midnumber.get(i));
res.append(mid1.get(j));
res.append(mid2.get(k));
res.append(mid3.get(l));
res.append(mid4.get(m));
change(mid5, mid4);
mid5.remove(m);
res.append(mid5.get(0)); if (res.charAt(2) != '4' && res.indexOf("53") == -1
&& res.indexOf("35") == -1
&& Result.indexOf(res.toString()) == -1) {
Result.add(res.toString());
}
res.setLength(0);
} }
}
}
}
System.out.println("个数:"+Result.size());
for(int i=0;i<Result.size();i++)
{
System.out.print(Result.get(i)+" ");
if(i%10==0&&i!=0)
{
System.out.println();
}
}
} public void change(Vector<String> v1, Vector<String> v2) {
v1.setSize(0);
for (int i = 0; i < v2.size(); i++) {
v1.addElement(v2.get(i));
}
} public static void main(String[] s) {
new Com();
}
}个数:198
122345 122543 123245 123254 123425 123452 125234 125243 125423 125432 132245
132254 132425 132452 132524 132542 142325 142523 143225 143252 145223
145232 152234 152243 152324 152342 152423 152432 212345 212543 213245
213254 213425 213452 215234 215243 215423 215432 221345 221543 223145
223154 223415 223451 225134 225143 225413 225431 231245 231254 231425
231452 231524 231542 232145 232154 232415 232451 232514 232541 241325
241523 242315 242513 243125 243152 243215 243251 245123 245132 245213
245231 251234 251243 251324 251342 251423 251432 252134 252143 252314
252341 252413 252431 312245 312254 312425 312452 312524 312542 315224
315242 315422 321245 321254 321425 321452 321524 321542 322145 322154
322415 322451 322514 322541 325124 325142 325214 325241 325412 325421
341225 341252 341522 342125 342152 342215 342251 342512 342521 345122
345212 345221 412325 412523 413225 413252 415223 415232 421325 421523
422315 422513 423125 423152 423215 423251 425123 425132 425213 425231
431225 431252 431522 432125 432152 432215 432251 432512 432521 451223
451232 451322 452123 452132 452213 452231 452312 452321 512234 512243
512324 512342 512423 512432 513224 513242 513422 521234 521243 521324
521342 521423 521432 522134 522143 522314 522341 522413 522431 523124
523142 523214 523241 523412 523421 541223 541232 541322 542123 542132
542213 542231 542312 542321 543122 543212 543221
共有 240 个1 122345 122543 123245 123254 123425
6 123452 124325 124523 125234 125243
11 125423 125432 132245 132254 132425
16 132452 132524 132542 134225 134252
21 134522 142325 142523 143225 143252
26 145223 145232 152234 152243 152324
31 152342 152423 152432 154223 154232
36 154322 212345 212543 213245 213254
41 213425 213452 214325 214523 215234
46 215243 215423 215432 221345 221543
51 223145 223154 223415 223451 224315
56 224513 225134 225143 225413 225431
61 231245 231254 231425 231452 231524
66 231542 232145 232154 232415 232451
71 232514 232541 234125 234152 234215
76 234251 234512 234521 241325 241523
81 242315 242513 243125 243152 243215
86 243251 245123 245132 245213 245231
91 251234 251243 251324 251342 251423
96 251432 252134 252143 252314 252341
101 252413 252431 254123 254132 254213
106 254231 254312 254321 312245 312254
111 312425 312452 312524 312542 314225
116 314252 314522 315224 315242 315422
121 321245 321254 321425 321452 321524
126 321542 322145 322154 322415 322451
131 322514 322541 324125 324152 324215
136 324251 324512 324521 325124 325142
141 325214 325241 325412 325421 341225
146 341252 341522 342125 342152 342215
151 342251 342512 342521 345122 345212
156 345221 412325 412523 413225 413252
161 415223 415232 421325 421523 422315
166 422513 423125 423152 423215 423251
171 425123 425132 425213 425231 431225
176 431252 431522 432125 432152 432215
181 432251 432512 432521 451223 451232
186 451322 452123 452132 452213 452231
191 452312 452321 512234 512243 512324
196 512342 512423 512432 513224 513242
201 513422 514223 514232 514322 521234
206 521243 521324 521342 521423 521432
211 522134 522143 522314 522341 522413
216 522431 523124 523142 523214 523241
221 523412 523421 524123 524132 524213
226 524231 524312 524321 541223 541232
231 541322 542123 542132 542213 542231
236 542312 542321 543122 543212 543221以下是我的代码:
package niko7.csdn;import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;/**
* 输出1,2,2,3,4,5的所有排列组合,4不能在第三位,3和5不能相邻
*
* 转载、引用必须保留此段信息。
* @author niko7,(顾法华,杭州)
* @email [email protected]
*
*/
public class MyTest
{
public static void main(String[] args)
{
int[] nums = new int[]{1,2,2,3,4,5};
int len = nums.length;
Set set = new TreeSet();
int[] indexs = new int[]{0,0,0,0,0,0};
for(indexs[0]=0; indexs[0]<len; indexs[0]++)
for(indexs[1]=0; indexs[1]<len; indexs[1]++)
for(indexs[2]=0; indexs[2]<len; indexs[2]++)
for(indexs[3]=0; indexs[3]<len; indexs[3]++)
for(indexs[4]=0; indexs[4]<len; indexs[4]++)
for(indexs[5]=0; indexs[5]<len; indexs[5]++)
{
//同一个字符重复出现的跳过
//两个2不是同一个字符
boolean skip = false;
a:
for(int i=0;i<len;i++)
for(int j=i+1;j<len;j++)
{
if(indexs[i]==indexs[j])
{
skip = true;
break a;
}
}
if(skip)
{
continue;
}
//4不能在第三位
if(4==nums[2])
{
continue;
}
//3和5不能相邻
boolean ok = true;
int[] tmpResult = new int[]{nums[indexs[0]],nums[indexs[1]],nums[indexs[2]],nums[indexs[3]],nums[indexs[4]],nums[indexs[5]]};
for(int i=0; i<len-1; i++)
{
if(2==Math.abs(tmpResult[i]-tmpResult[i+1]) && 8==(tmpResult[i]+tmpResult[i+1]))
{
ok = false;
break;
}
}
if(ok)
{
//自动去重,其实这是针对两个2的
set.add(""+tmpResult[0]+tmpResult[1]+tmpResult[2]+tmpResult[3]+tmpResult[4]+tmpResult[5]);
}
}
System.out.println("共有 "+set.size()+" 个");
Iterator iter = set.iterator();
int no = 1;
while(iter.hasNext())
{
if(no%5==1)
{
System.out.println();
System.out.print(no);
}
no++;
System.out.print("\t" + iter.next());
}
}
}
代码blog:http://blog.csdn.net/niko7/archive/2008/05/20/2462303.aspx
//4不能在第三位
if(4==nums[indexs[2]])
{
continue;
}下面是结果:共有 198 个1 122345 122543 123245 123254 123425 123452 125234 125243 125423 125432
11 132245 132254 132425 132452 132524 132542 142325 142523 143225 143252
21 145223 145232 152234 152243 152324 152342 152423 152432 212345 212543
31 213245 213254 213425 213452 215234 215243 215423 215432 221345 221543
41 223145 223154 223415 223451 225134 225143 225413 225431 231245 231254
51 231425 231452 231524 231542 232145 232154 232415 232451 232514 232541
61 241325 241523 242315 242513 243125 243152 243215 243251 245123 245132
71 245213 245231 251234 251243 251324 251342 251423 251432 252134 252143
81 252314 252341 252413 252431 312245 312254 312425 312452 312524 312542
91 315224 315242 315422 321245 321254 321425 321452 321524 321542 322145
101 322154 322415 322451 322514 322541 325124 325142 325214 325241 325412
111 325421 341225 341252 341522 342125 342152 342215 342251 342512 342521
121 345122 345212 345221 412325 412523 413225 413252 415223 415232 421325
131 421523 422315 422513 423125 423152 423215 423251 425123 425132 425213
141 425231 431225 431252 431522 432125 432152 432215 432251 432512 432521
151 451223 451232 451322 452123 452132 452213 452231 452312 452321 512234
161 512243 512324 512342 512423 512432 513224 513242 513422 521234 521243
171 521324 521342 521423 521432 522134 522143 522314 522341 522413 522431
181 523124 523142 523214 523241 523412 523421 541223 541232 541322 542123
191 542132 542213 542231 542312 542321 543122 543212 543221
第一步:不考虑任何条件,总的有6!=720个;
第二步:不考虑有2,2这2个相同的数,计算35,53在一起的情况有2*5!=240;
第三步:720-240=480个;
第四步:480/2=240.
结果为240.
下面为本人所写代码,没有用面向对象思想,所以写的比较难看,而且只能针对{1,2,2,3,4,5}这个数组
public static void main(String args[]) {
int[] a = {1,2,2,3,4,5};
int num=0;
int first2=0; //first2用来记录第一个2出现的位置
int second2=0; //second2用来记录第二个2出现的位置 String strList[] = new String[240];
for(int i = 0; i < 6; i++) {
if(i == 1)
first2 = 1;
if(i == 2)
second2 = 1;
for(int j = 0; j < 6; j++) {
if(i==j)
continue;
if(j == 1)
first2 = 2;
if(j == 2)
second2 = 2;
for(int k = 0; k < 6; k++) {
if(i==k || j==k)
continue;
if(k == 1)
first2 = 3;
if(k == 2)
second2 = 3;
for(int l = 0; l < 6; l++) {
if(i==l || j==l || k==l)
continue;
if(l == 1)
first2 = 4;
if(l == 2)
second2 = 4;
for(int m = 0; m < 6; m++) {
if(i==m || j==m || k==m || l==m)
continue;
if(m == 1)
first2 = 5;
if(m == 2)
second2 = 5;
for(int n = 0; n < 6; n++) {
if(i==n || j==n || k==n || l==n || m==n)
continue;
if(n == 1)
first2 = 6;
if(n == 2)
second2 = 6;
if(first2 < second2)
continue;
String str = ""+a[i]+a[j]+a[k]+a[l]+a[m]+a[n];
if(str.matches("\\d*35\\d*") || str.matches("\\d*53\\d*"))
continue;
System.out.println(str);
strList[num] = str;
num++;
}
}
}
}
}
}
System.out.println(num);
for(int i = 0; i < strList.length; i++) { //这里的2个for循环是想看看这240个数中有没相同的
for(int j = 0; j < strList.length; j++) {
if(i != j && strList[i] == strList[j])
System.out.println("第"+i+"个 = 第"+j+"个");
}
}
}
521234 325124 523142 341252 345212 522134 225413 152432 423251 521243
412523 312254 225143 312452 122345 231425 132452 542123 252143 145232
212345 213245 321524 125243 232145 452321 543221 143252 251234 225431
122543 423125 512234 541223 223154 342251 513422 231254 342521 425213
232541 421325 252431 522341 231245 231452 522431 142325 341522 152234
231524 425123 432215 252314 252413 521423 251423 523421 522413 425231
321254 451322 523124 325421 152324 245231 223415 215234 125423 212543
523412 132542 123245 252341 523214 342215 243215 325412 542231 413252
413225 322154 312542 513242 152342 452132 215243 251432 232451 342152
132524 523241 452231 431252 132245 221345 322415 322514 415223 312245
152243 123254 512432 542213 245123 452312 322145 142523 125234 543212
312524 451232 245213 422315 512243 321425 241523 242315 251342 415232
432125 345221 243251 143225 132254 321452 543122 541232 315224 431522
342125 521342 243152 345122 432251 225134 213425 322451 513224 315242
512342 243125 342512 322541 252134 325142 512423 452213 223145 325241
125432 215432 432521 432512 341225 242513 521324 213254 432152 542312
232154 521432 512324 123452 251243 321245 232415 315422 412325 522314
542321 425132 215423 422513 145223 232514 312425 223451 132425 522143
152423 541322 123425 421523 251324 321542 542132 451223 423215 452123
325214 423152 213452 245132 431225 241325 221543 231542
import java.util.*;
public class Pailie1 {
public static void main(String args[]){
int n=0;
int m;
int ac[]={0,1,2,2,3,4,5};
int a[]={0,1,2,2,3,4,5};
int all=0;
int j;
int b[][]=new int[468][6];
Random rand=new Random();
for(all=0;all<468;){
for(int i=0;i<=6;i++)
a[i]=ac[i];
for(int i=6;i>=1;i--){
j=rand.nextInt(i)+1;
b[all][i-1]=a[j];
if(j>=i)
break;
a[j]=a[++j];
}
}n=0;
for(int i=1;i<6;i++){
if(b[all][2]==4){
n=1;
break;
}
if((b[all][i-1]==5||b[all][i-1]==3)&&(b[all][i]==3||b[all][i]==5))
n=1;
}
if(n==1)continue;
n=0;
for(m=0;m<all;m++){
for(int i=0;i<6;i++){
if(b[m][i]!=b[all][i]){
break;}
else
if(i==5)n=-1;
}
if(n==-1)break;
}
if(n==-1)continue;
for(int k=0;k<6;k++){
System.out.print(b[all][k]);
if(k==5)
System.out.print("\t");
}
all++;
}
}}
import java.util.*;
public class Pailie1 {
public static void main(String args[]){
int n=0;
int m;
int ac[]={0,1,2,2,3,4,5};
int a[]={0,1,2,2,3,4,5};
int all=0;
int j;
int b[][]=new int[198][6];
Random rand=new Random();
for(all=0;all<198;){
for(int i=0;i<=6;i++)
a[i]=ac[i];
for(int i=6;i>=1;i--){
j=rand.nextInt(i)+1;
b[all][i-1]=a[j];
while(true){
if(j>=i)
break;
a[j]=a[++j];
}
}
n=0;
for(int i=1;i<6;i++){
if(b[all][2]==4){
n=1;
break;
}
if((b[all][i-1]==5||b[all][i-1]==3)&&(b[all][i]==3||b[all][i]==5))
n=1;
}
if(n==1)continue;
n=0;
for(m=0;m<all;m++){
for(int i=0;i<6;i++){
if(b[m][i]!=b[all][i]){
break;}
else
if(i==5)n=-1;
}
if(n==-1)break;
}
if(n==-1)continue;
for(int k=0;k<6;k++){
System.out.print(b[all][k]);
if(k==5)
System.out.print("\t");
}
all++;
}
}}