你好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;
}
}