n等于3时
11111
12221
12321
12221
11111
#include <stdio.h>
int mod(int n){
return n>0?n:-n;
}
int max(int n1,int n2){
return n1>n2?n1:n2;
}
void print(int n){
int i,j;
for(i=0;i<2*n-1;i++){
for(j=0;j<2*n-1;j++){
printf("%d",n-max(mod(i+1-n),mod(j+1-n)));
}
printf("\n");
}
}
int main(){
int n;
scanf("%d",&n);
print(n);
}
#include<stdio.h>
int main()
{
int n,i,j;
scanf("%d",&n);
int h=n*2-1;
int t[h][h];
for(i=0; i<h; i++)
for(j=0; j<h; j++)
if(i+j<h)
t[i][j]=i<j?i+1:j+1;
else
t[i][j]=i>j?h-i:h-j;
for(i=0; i<h; i++)
{
for(j=0; j<h; j++)
{
printf("%4d",t[i][j]);
}
printf("\n");
}
return 1;
}
有点像螺旋矩阵,每一圈加1
int n = 2 * width - 1;
int[][] a = new int[n][n];
int i, j, num = 0, nn = 1;
while (n > 0) {
a[num][num] = nn;
if (n > 1) {
a[num + 1][num] = nn;
for (i = num, j = num + 1; j < num + n; j++)//上边横着
a[i][j] = nn;
for (j = num + n - 1, i = num + 1; i < num + n; i++)//右边竖着
{
a[i][j] = nn;
}
for (i = num + n - 1, j = n + num - 2; j >= num; j--)//下面横着
{
a[i][j] = nn;
}
for (j = num, i = num + n - 2; i > num; i--)//左面竖着
{
a[i][j] = nn;
}
} else {
break;
}
nn++;
n = n - 2;
num++;
}