package s5;
import java.util.Scanner;
public class test9 {
/*方阵的主对角线之上称为“上三角”。
请你设计一个用于填充n阶方阵的上三角区域的程序。填充的规则是:使用1,2,3….的自然数列,从左上角开始,按照顺时针方向螺旋填充。
例如:当n=3时,输出:
1 2 3
6 4
5
当n=4时,输出:
1 2 3 4
9 10 5
8 6
7
当n=5时,输出:
1 2 3 4 5
12 13 14 6
11 15 7
10 8
9
程序运行时,要求用户输入整数n(3~20)
程序输出:方阵的上三角部分。
要求格式:每个数据宽度为4,右对齐。
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
int a=scan.nextInt();
int [][]s=new int [a][a];
for(int i=0;i<a;i++){
for(int j=0;j<a;j++){
s[i][j]=0;
}
}
int t=1;
for(int i=0;i<a/2;i++){
for(int j=i;j<a-2*i;j++){//右
s[i][j]=t;
t++;
}
for(int j=i+1,z=a-2*i-1-1;j<a-2*i;j++,z--){//下
s[j][z]=t;
t++;
}
for(int j=a-1-2*i-1;j>i;j--){//上
s[j][i]=t;
t++;
}
}
for(int i=0;i<a;i++){
for(int j=0;j<a;j++){
if(s[i][j]==0)
continue;
System.out.print(s[i][j]+" ");
}
System.out.println();
}
}
}
import java.util.Scanner;
public class test9 {
/*方阵的主对角线之上称为“上三角”。
请你设计一个用于填充n阶方阵的上三角区域的程序。填充的规则是:使用1,2,3….的自然数列,从左上角开始,按照顺时针方向螺旋填充。
例如:当n=3时,输出:
1 2 3
6 4
5
当n=4时,输出:
1 2 3 4
9 10 5
8 6
7
当n=5时,输出:
1 2 3 4 5
12 13 14 6
11 15 7
10 8
9
程序运行时,要求用户输入整数n(3~20)
程序输出:方阵的上三角部分。
要求格式:每个数据宽度为4,右对齐。
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
int a=scan.nextInt();
int [][]s=new int [a][a];
for(int i=0;i<a;i++){
for(int j=0;j<a;j++){
s[i][j]=0;
}
}
int t=1;
for(int i=0;i<a/2;i++){
for(int j=i;j<a-2*i;j++){//右
s[i][j]=t;
t++;
}
for(int j=i+1,z=a-2*i-1-1;j<a-2*i;j++,z--){//下
s[j][z]=t;
t++;
}
for(int j=a-1-2*i-1;j>i;j--){//上
s[j][i]=t;
t++;
}
}
for(int i=0;i<a;i++){
for(int j=0;j<a;j++){
if(s[i][j]==0)
continue;
System.out.print(s[i][j]+" ");
}
System.out.println();
}
}
}