算法描述: 现在有24个数字 1-24。把他们分成六组,比如 第一次分组: |
import java.util.LinkedList;
import java.util.List;
public class paolie {
public static void main(String[] args) {
int[][] a = new int[6][4];
System.out.println("----------the 1th time----------");
for (int i=0; i<24; i++) {
a[i/4][i%4] = i+1;
System.out.printf("%2d ", i+1);
if ((i+1)%4 == 0) {System.out.println();}
}
for (int j=0; j<3; j++) {
System.out.printf("----------the %dth time----------\n", j+2);
change(a, j+1);
for (int i=0; i<24; i++) {
System.out.printf("%2d ", a[i/4][i%4]);
if ((i+1)%4 == 0) {System.out.println();}
}
}
}
public static void change(int [][] a,int n){
List<Integer> list = new LinkedList<Integer>();
int c = a[0].length,t = 0; //a[0]表示第一行的个数
System.out.println("c的个数:"+c);
System.out.println("a的个数:"+a.length); //a表示有几个一维数组
if(n<3){
for(int i=1;i<c-1;i++){
list.clear();
for(int j=0;j<a.length;j++){
list.add(a[j][i]);
}
for(int j=0;j<i;j++){
t = list.remove(0);
list.add(t);
}
for(int j=0;j<a.length;j++){
a[j][i] = list.get(j);
}
}
list.clear();
for (int j=0; j<a.length; j++) {
list.add(a[j][c-1]);
}
for (int j=0; j<n; j++) {
t = list.remove(a.length-1);
list.add(0, t);
}
for (int j=0; j<a.length; j++) {
a[j][c-1] = list.get(j);
}
}else{
for (int j=0; j<a.length; j++) {
list.add(a[j][1]);
}
for (int j=0; j<2; j++) {
t = list.remove(0);
list.add(t);
}
for (int j=0; j<a.length; j++) {
a[j][1] = list.get(j);
}
for (int i=2; i<c; i++) {
list.clear();
for (int j=0; j<a.length; j++) {
list.add(a[j][i]);
}
if (i == 2) {
t = list.remove(0);
list.add(t);
} else {
for (int j=0; j<2; j++) {
t = list.remove(a.length-1);
list.add(0, t);
}
}
for (int j=0; j<a.length; j++) {
a[j][i] = list.get(j);
}
}
}
}
}