您的位置:首页 > 其它

螺旋矩阵

2009-04-24 16:25 162 查看
public class TestU {

public static void main(String[] args) {
int[][] arr = new int[4][5];
int temp = 1;
int i = 0;
int j = 0;

for(int t=0;t<arr.length;t++) {
i=t;
for(j=t;j<arr[t].length-t;j++) {
if(temp==arr.length*arr[t].length+1) {
break;
}else {
arr[i][j] =temp;
temp++;
}

}
j--;
for(i=i+1;i<arr.length-t;i++) {
if(temp==arr.length*arr[t].length+1) {
break;
}else {
arr[i][j] =temp;
temp++;
}
}
i--;
for(j=j-1;j>=t;j--) {
if(temp==arr.length*arr[t].length+1) {
break;
}else {
arr[i][j] =temp;
temp++;
}
}
j++;
for(i=i-1;i>t;i--) {
if(temp==arr.length*arr[t].length+1) {
break;
}else {
arr[i][j] =temp;
temp++;
}
}
i++;

}

for(int k=0;k<arr.length;k++) {
for(int l=0;l<arr[k].length;l++) {
System.out.print(arr[k][l]+" ");
}
System.out.println();
}
}
}
呵呵,我一直不喜欢做过程的东西,但还是没法。这是第一种方法。

public class TestWU {

public static void main(String[] args) {
int[][] arr = new int[5][5];
int temp = 1;
int i = 0;
int j = 0;
while(true) {
arr[i][j] = temp++;

boolean right= j<arr[i].length-1&&arr[i][j+1]==0;
boolean down = i<arr.length-1&&arr[i+1][j]==0;
boolean left = j>0&&arr[i][j-1]==0;
boolean up = i>0&&arr[i-1][j]==0;

/*			if(right) {
if(down) {
i++;
}else {
j++;
}

}
else if(down) {
if(left) {
j--;
}else {
i++;
}

}
else if(left) {
if(up) {
i--;
}else {
j--;
}

}
else if(up) {
if(right) {
j++;
}else {
i--;
}

}
else break;*/

if(down) {
if(right) {
j++;
}else {
i++;
}
}

else if(up) {
if(left) {
j--;
}else {
i--;
}
}

else if(right) {
if(down){
i++;
}else {
j++;
}
}
else if(left) {
if(up) {
i--;
}else {
j--;
}
}
else break;
}

for(int k=0;k<arr.length;k++) {
for(int l=0;l<arr[k].length;l++) {
System.out.print(arr[k][l]+" ");
}
System.out.println();
}

}
}
这是第二种方法.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: