2016.3.4【i码邦】每日一练(javaSE)

用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。

Java每日一练编程直播 476036218
我们只直播【i码邦】每日一练的编程实战,动手才是王道!
已邀请:

a513470086 - G i码邦(爱码邦) --没理由!

赞同来自:

/*
 * Imabang每日一练 2016/03/04
 * 用1、2、2、3、4、5这六个数字,
 * 用java写一个main函数,
 * 打印出所有不同的排列,
 * 如:512234、412345等,
 * 要求:"4"不能在第三位,"3"与"5"不能相连。
 * */
package com.Daily.util;
import java.util.*;
public class Reverse {
    @SuppressWarnings({ "unused", "resource" })
    public static void main(String[] args){
        final long serialVersionUID = 1L;
        System.out.print("请输按顺序入1、2、2、3、4、5这六个数字,要求4不能在第三位,3、5不能相连: ");
        Scanner stdin = new Scanner(System.in);
        int[] A = new int[6];
        for(int i=0;i<6;i++)A[i]=stdin.nextInt();
        java.util.Arrays.sort(A);
        System.out.print("输出结果4不在第三位,3、5不相连: ");
        for (int k = A.length-1; k >= 0; k--) {
            System.out.print(A[k]+" ");
        }
    }
}

                                                ---不管对与否先交了再说!
 

--来自网页客户端

a513470086 - G i码邦(爱码邦) --没理由!

赞同来自:

摘码:大家参考!

代码:
package com.Daily.util;

import java.util.Iterator;  
import java.util.TreeSet;  

public class TestQuestion {  

    private String[] b = new String[]{"1", "2", "2", "3", "4", "5"};  
    private int n = b.length;  
    private boolean[] visited = new boolean[n];  
    private int[][] a = new int[n][n];  
    private String result = "";  
    private TreeSet set = new TreeSet();  

    public static void main(String[] args) {  
        new TestQuestion().start();  
    }  

    private void start() {  

        // Initial the map a[][]  
        for (int i = 0; i < n; i++) {  
            for (int j = 0; j < n; j++) {  
                if (i == j) {  
                    a[i][j] = 0;  
                } else {  
                    a[i][j] = 1;  
                }  
            }  
        }  

        // 3 and 5 can not be the neighbor.  
        a[3][5] = 0;  
        a[5][3] = 0;  

        // Begin to depth search.  
        for (int i = 0; i < n; i++) {  
            this.depthFirstSearch(i);  
        }  

        // Print result treeset.  
        Iterator it = set.iterator();  
        while (it.hasNext()) {  
            String string = (String) it.next();  
            // "4" can not be the third position.  
            if (string.indexOf("4") != 2) {  
                System.out.println(string);  
            }  
        }  
    }  

    private void depthFirstSearch(int startIndex) {  
        visited[startIndex] = true;  
        result = result + b[startIndex];  
        if (result.length() == n) {  
            // Filt the duplicate value.  
            set.add(result);  
        }  
        for(int j = 0; j < n; j++) {  
            if (a[startIndex][j] == 1 && visited[j] == false) {  
                depthFirstSearch(j);  
            } else {  
                continue;  
            }  
        }  

        // restore the result value and visited value after listing a node.  
        result = result.substring(0, result.length() -1);  
        visited[startIndex] = false;  
    }  
}  

输出结果:
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

 
 

--来自网页客户端

8862639qq - java编程师

赞同来自:

import java.util.ArrayList;
import java.util.List;

public class NumTest {
 public static void main(String[] args) {
  String s = "122345";// 原字符串
  List<String> result = list(s, "");// 列出字符的组合,放入result
  System.out.println("3与5不能相连,4不能在第三位有" + result.size() + "个");
  System.out.println("分别是" + result.toString());
 }

 public static List<String> list(String str, String str2) {
  List<String> result = new ArrayList<String>();// 存放结果信息。
  if (str.length() <= 0) {
   result.add(str2);
   for (int i = 0; i < (str2.length() - 1); i++) {
    if (str2.charAt(2) == '4') {
     result.remove(str2);
    }
    if ((str2.charAt(i) == '3' && str2.charAt(i + 1) == '5')) {
     result.remove(str2);
    }
    if ((str2.charAt(i) == '5' && str2.charAt(i + 1) == '3')) {
     result.remove(str2);
    }
   }
  }
  for (int i = 0; i < str.length(); i++) {
   List<String> temp = list(new StringBuilder(str).deleteCharAt(i)
     .toString(), str2 + str.charAt(i));
   result.addAll(temp);

  }

  return result;
 }
}

--来自网页客户端

java疯狂人

赞同来自:

public class Arrange
{
public static void main(String[] args)
{
int num=0;
int[] arr={1,2,2,3,4,5};
int[] sb=new int[6];
for(int x=0;x<arr.length;x++)
{
sb[0]=arr[x];
for(int y=0;y<arr.length;y++)
{
if((x==2&y==1)|x==y)
continue;
if(x==3&y==5)
continue;
if(x==5&y==3)
continue;
sb[1]=arr[y];
for(int z=0;z<arr.length;z++)
{
if(z==x||z==y)
continue;
if((z==1&y==2)|(z==1&x==2))
continue;
if((y==3&z==5)|(z==3&y==5))
continue;
sb[2]=arr[z];
for(int a=0;a<arr.length;a++)
{
if(a==z|a==y|a==x|a==4)
continue;
if((a==1&z==2)|(a==1&y==2)|(a==1&x==2))
continue;
if((z==3&a==5)|(z==5&a==3))
continue;
sb[3]=arr[a];
for(int b=0;b<arr.length;b++)
{
if(b==a|b==z|b==y|b==x)
continue;
if((b==1&a==2)|(b==1&z==2)|(b==1&y==2)|(b==1&x==2))
continue;
if((a==3&b==5)|(a==5&b==3))
continue;
sb[4]=arr[b];
for(int c=0;c<arr.length;c++)
{
if(c==b|c==a|c==z|c==y|c==x)
continue;
if((c==1&b==2)|(c==1&a==2)|(c==1&z==2)|(c==1&y==2)|(c==1&x==2))
continue;
if((b==3&c==5)|(b==5&c==3))
continue;
sb[5]=arr[c];
getPrint(sb);
num++;
}
}
}
}
}
}
System.out.println(num);
}
public static void getPrint(int[] arr)
{
System.out.print("[");
for(int x=0;x<arr.length-1;x++)
{
System.out.print(arr[x]+",");
}
System.out.println(arr[arr.length-1]+"]");
}
} 顺便看看我这个哪里错了?

--来自网页客户端

fengyun12

赞同来自:

/**
* 每日一练 20160304 用1,2,2,3,4,5这六个数字,打印出不同的排序,要求
* 4不能在第三位,3,5不可以相连
*/
public void ex160304(){
int[] myInt={1,2,2,3,4,5};
int[] myPoint={0,0,0,0,0,0};
int p=1;

for(int a1=0;a1<myInt.length;a1++){
if(a1==2) //防止2重复打印
continue;
myPoint[a1]=p;
for(int a2=0;a2<myInt.length;a2++){
if(myPoint[a2]==p) //表示该项已经被取过了
continue;
if(a2==2 && myPoint[1]==0) //防止2重复打印
continue;
if((a2==3 && a1==5) || (a2==5 && a1==3)) //防止3和5相连
continue;
myPoint[a2]=p;
for(int a3=0;a3<myInt.length;a3++){
if(myPoint[a3]==p) //表示该项已经被取过了
continue;
if(a3==2 && myPoint[1]==0) //防止2重复打印
continue;
if((a3==3 && a2==5) || (a3==5 && a2==3)) //防止3和5相连
continue;
if(a3==4) //4不能在第3位
continue;
myPoint[a3]=p;

for(int a4=0;a4<myInt.length;a4++){
if(myPoint[a4]==p) //表示该项已经被取过了
continue;
if(a4==2 && myPoint[1]==0) //防止2重复打印
continue;
if((a4==3 && a3==5) || (a4==5 && a3==3)) //防止3和5相连
continue;
myPoint[a4]=p;
for(int a5=0;a5<myInt.length;a5++){
if(myPoint[a5]==p) //表示该项已经被取过了
continue;
if(a5==2 && myPoint[1]==0) //防止2重复打印
continue;
if((a5==3 && a4==5) || (a5==5 && a4==3)) //防止3和5相连
continue;
myPoint[a5]=p;
for(int a6=0;a6<myInt.length;a6++){
if(myPoint[a6]==p) //表示该项已经被取过了
continue;
if(a6==2 && myPoint[1]==0) //防止2重复打印
continue;
if((a6==3 && a5==5) || (a6==5 && a5==3)) //防止3和5相连
continue;
myPoint[a6]=p;

System.out.println(""+myInt[a1]+myInt[a2]+myInt[a3]+myInt[a4]+myInt[a5]+myInt[a6]);

myPoint[a6]=0;
}
myPoint[a5]=0;
}
myPoint[a4]=0;
}
myPoint[a3]=0;
}
myPoint[a2]=0;

}
myPoint[a1]=0;
}


}

--来自移动客户端

fengyun12

赞同来自: 大饼

/**
* 每日一练 20160304 用1,2,2,3,4,5这六个数字,打印出不同的排序,要求
* 4不能在第三位,3,5不可以相连
*/
void ex160304_fz(int[] myInt, int[] myPoint,int[] endInt, int p, int a2,int i) {
for (int a3 = 0; a3 < myInt.length; a3++) {
if (myPoint[a3] == p) // 表示该项已经被取过了
continue;
if (a3 == 2 && myPoint[1] == 0) // 防止2重复打印
continue;
if ((a3 == 3 && a2 == 5) || (a3 == 5 && a2 == 3)) // 防止3和5相连
continue;
if (a3 == 4 && i==2) // 4不能在第3位
continue;
myPoint[a3] = p;
if(i==endInt.length-1){
endInt[i]=myInt[a3];
for(int j=0;j<endInt.length;j++){
System.out.print(endInt[j]);
}
System.out.println();
}
else{
endInt[i]=myInt[a3];
i++;
ex160304_fz(myInt,myPoint,endInt,p,a3,i);
i--;
}
myPoint[a3] = 0;
}

}
public void ex160304(){
int[] myInt={1,2,2,3,4,5};
int[] myPoint={0,0,0,0,0,0};
int[] endInt=new int[6];
int p=1;
ex160304_fz(myInt,myPoint,endInt,p,0,0); }
}

--来自移动客户端

azhaoyueb

赞同来自:

新手来看看

--来自移动客户端

要回复问题请先登录注册

Template error, template file not found