2D表交换列以获取所有组合

时间:2014-04-25 16:32:10

标签: java arrays combinations

你好dec转换密码

我需要交换列以获取java 2D char表中的所有组合

示例:

R C P Y
O T R G
P A Y H

组合1:交换第1列和第2列

C R P Y
T O R G
A P Y H

组合2:交换第1列和第3列

P C R Y
R T O G
Y A P H

这是我的代码:

public class TranspositionCipher {

         private String plainText="";
         private String cipherText;
         private final int colums = 4;  
         private int comb[] = new int[3003];
              TranspositionCipher(String cipherText){
                  this.cipherText = cipherText;
              }

               public String decryption(){

                 int len = cipherText.length();
                 int columLen = len/colums;

                 char[][] chArr = new char[columLen][colums];

                 //System.out.println(columLen);

                       int ii=0;
                       for(int j=0; j<colums; j++)
                         for(int i=0; i<columLen; i++)  
                         {
                           chArr[i][j]=cipherText.charAt(ii++);
                         }  

                    // System.out.println(Arrays.toString(chArr)); 


                 for(int j=0; j<columLen; j++){
                         for(int i=0; i<colums; i++)  
                         {
                             System.out.print(chArr[j][i]);
                         }
                         System.out.println("\n");
                   }






                 int array[] = new int[4];


                       for(int j=0; j<4; j++)
                       {
                            array[j]=j;
                       }

                         perm(array, 0, 3);

                    //     ii=0;
                       for(int i=0; i<comb.length; i++)  
                       {
                           for(int j=0; j<columLen; j++)  
                           {
                            //    System.out.println(chArr[j][comb[ii++]]);

                           }
                       }


                        for(int j=0; j<comb.length; j++)  
                           {    System.out.println(comb[j]); 
                            //    System.out.println(chArr[j][comb[ii++]]);

                           }    





                 return cipherText;

               }

               public void perm(int[] a, int i, int n) { 
for (int j = i; j <= n; j++) { 
swap(a, j, i); 
perm(a, i + 1, n); 
swap(a, i, j); 
} 
if(i == n) { 
System.out.println(Arrays.toString(a)); 
//comb = a;
 for(int j=0; j<a.length; j++)  
     System.out.println(a[i]);
} 
} 

public void swap(int[] a, int i, int j) { 
int tmp = a[i]; 
a[i] = a[j]; 
a[j] = tmp; 
}


}

0 个答案:

没有答案