前言:
作者:神的孩子在歌唱
大家好,我叫运智
学霸题 - 数正方形
Description
这是一道学霸题 - 数正方形
你需要用到顺时针标数法, 从第一行第一列往右数:
第一个数字标上00, 第二个数字标上11, cdots⋯, 第ii个数字标上(i - 1)%10(i−1)%10, 如下图所示
你学会了吗?
Input
输入仅包含一个正整数n(1le nle 100)n(1≤n≤100), 代表正方形的边长
Output
输出一个ntimes nn×n的矩阵, 代表在数正方形时所标记的数字
注意: 行末不应该出现多余的空格
Sample Input 1
5
Sample Output 1
0 1 2 3 4 5 6 7 8 5 4 3 4 9 6 3 2 1 0 7 2 1 0 9 8
Sample Input 2
3
Sample Output 2
0 1 2 7 8 3 6 5 4
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner st=new Scanner(System.in);
int num=st.nextInt();
int[][] data=new int[num][num];
// 循环将0~9个数字填入
int i=0,j=0,p=num-1,nums=1,n=num;
if (num%2!=0){
n=(num+1)/2;
}else {
n=n/2;
}
while(n>0){
int k=p;
while(j<=k){
data[i][j]=(nums-1)%10;
nums++;
j++;
}
int z=p;
i++;
j--;
while(i<=z){
data[i][j]=(nums-1)%10;
i++;
nums++;
}
i--;
k=num-p-1;
while(j>k){
j--;
data[i][j]=(nums-1)%10;
nums++;
}
z=num-p-1;
i--;
while(i>z){
data[i][j]=(nums-1)%10;
i--;
nums++;
}
i++;
j++;
p--;
n--;
}
for (int k=0;k
本人csdn博客:https://blog.csdn.net/weixin_46654114
转载说明:跟我说明,务必注明来源,附带本人博客连接。



