{:soso_e130:}
/*问题:用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。
解答的大牛,希望给出思路和给出代码的注释谢谢*/
为什么关于这道题我回答不了了啊,发帖限制了啊版主。。。版主说回答的给3分,所以我就拿着上课的时间做这道题马上下课了,先把我的代码附加上,要求:"4"不能在第三位,"3"与"5"不能相连。这个条件还没来得及思考,但是我应该没问题,刚把所有得排列个数一一打印出来了
明天不上课上不了网啊,后面的条件我周一上课了在把他编完,然后传上来
希望各位版主看在我实在诚恳的份上不要因为我没达到要求而扣分额,我是真的没时间了啊。。已经敲铃了....
周一一定把后续代码补齐然后发上来
以下是我思路、代码和注释:
我的代码应该很容易理解,由于时间关系没有细致的注释,望谅解,周一来补齐
public class test1
{
public static void main(String[] args)
{
String[] a1 = new String[]{"1","2","2","3","4","5"};
String[] a2 = new String[]{"1","2","2","3","4","5"};
String[] a3 = new String[]{"1","2","2","3","4","5"};
String[] a4 = new String[]{"1","2","2","3","4","5"};
String[] a5 = new String[]{"1","2","2","3","4","5"};
String[] a6 = new String[]{"1","2","2","3","4","5"};
String s1 = null;
String s2 = null;
String s3 = null;
String s4 = null;
String s5 = null;
String s6 = null;
//s1到s6表示的都是每个数的位置
//x1到x6表示的是数组的元素角标
//每个for循环表示一个数
for(int x1 = 0;x1<a1.length;x1++)//用1和下面的每一位组合一次
{
s1 = a1[x1];
for(int x2 = 0;x2<a2.length;x2++)//用2和下面的每一位组合一次
{
if(x1!=x2) //a1的角标和a2的角标不能相同,即:如果a1[0]==1,那么a2[0]==1时就不组合,以下以此类推
{
s2 = s1+ a2[x2];
for(int x3 = 0;x3<a3.length;x3++)
{
if(x1!=x2 && x1!=x3 && x2!=x3)//a1,a2,a3的角标不同才组合
{
s3 = s2+ a3[x3];
for(int x4 = 0;x4<a4.length;x4++)
{
if(x1!=x2 && x1!=x3 && x1!=x4 &&x2!=x3 &&x2!=x4 && x3!=x4 )
{
s4 = s3+ a4[x4];
for(int x5 = 0;x5<a5.length;x5++)
{
if(x1!=x2 && x1!=x3 && x1!=x4 && x1!=x5 &&x2!=x3 &&x2!=x4 && x2!=x5 && x3!=x4 &&x3!=x5)
{
s5 = s4+ a5[x5];
for(int x6 = 0;x6<a6.length;x6++)
{
if(x1!=x2 && x1!=x3 && x1!=x4 && x1!=x5 && x1!=x6 &&x2!=x3 &&x2!=x4 && x2!=x5 &&x2!=x6 && x3!=x4 &&x3!=x5 && x3!=x6 && x4!=x5 &&x4!=x6&& x5!=x6)
{
s6 = s5+ a6[x6];
System.out.println(s6);
}
}
}
}
}
}
}
}
}
}
}
}
}
//此题本人花着上课的时间做的哦,做了好久啊个么,
//此题仔细看是可以看懂的,很容易理解额
|
|