蛇形矩阵
题目
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
输出
对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。
案例
样例输入
5
样例输出
1 3 6 10 15 2 5 9 14 4 8 13 7 12 11
分析
- 从上图可以分析,黄色代表两数之差,设一个数字是i行j列的话,首先确定每行的第一个数字;可以知道第i行的首位数字:num=i-1+a,a是上一行首位数字
- 接着确定每行后面数字的关系,可以分析第i行第j列的关系得到num1=num+i+j-1
#include<stdio.h>
int main()
{
int n,i,j,a,b,temp;
temp=1;
scanf("%d",&n);
for(i=1;i<=n;i++){ //控制行
a=i-1+temp; //a作为开头
temp=a;
b=i+1;
for(j=n+1-i;j>0;j--){ //控制列
if(i!=n && j==1){ //判断一行最后一个
a += b;
printf("%d",a);
}else{
if(j==n+1-i){ //判断第一个
printf("%d ",a);
}else{
a += b;
printf("%d ",a);
b++;
}
}
}
printf("\n");
}
return 0;
}