nXn矩阵转圈圈

输入一个数字n,输出n x n矩阵,从1开始,顺着下、右、上、左递归绕圈圈:

int i=0,j=0;
int step;
int n = 0;
int stub,type;
int result[][];
int val=1;
String tmp;
System.out.println("请输入一个正整数:");
BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
tmp = bfr.readLine();
bfr.close();
if(tmp == null){
System.out.println("警告!没有输入值,程序将退出");
return;
}
n = Integer.parseInt(tmp);
stub = 2*n-1;
result = new int[n][n];
for(int k=1; k<=stub; k++){
type = k%4;
step = n-k/2;

if(type == 1){ //向下
for(int down=1; down<=step; down++){
result[i][j] = val;
val++;
i++;
}
i--;
j++;
}else if(type == 2){ //向右
for(int right=1; right<=step; right++){
result[i][j] = val;
val++;
j++;
}
j--;
i--;
}else if(type == 3){ //向上
for(int up=1; up<=step; up++){
result[i][j] = val;
val++;
i--;
}
i++;
j--;
}else if(type == 0){ //向左
for(int left=1; left<=step; left++){
result[i][j] = val;
val++;
j--;
}
j++;
i++;
}
}//end of outter for loop

// print result:
for(int rs[] : result){
for(int r : rs){
System.out.printf("%4d",r);
}
System.out.println();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值