问题 1097: 蛇行矩阵
时间限制: 1Sec 内存限制: 64MB 提交: 1980 解决: 1165
题目描述
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
输入
本题有多组数据,每组数据由一个正整数N组成。(N不大于100)
输出
对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。
样例输入
5 样例输出 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11
解题思路
其实这就是一个找规律的问题。遇到这种矩阵输出的,要特别注意数值与行列的关系式。
就拿第一行来说,1,3,6,10,15。间隔是2,3,4。是不是在依次等量递增,我们可以看作是列变化引起的。
用i表示行,j表示列(注:行列从零开始算起)。同一行的算法如下:
temp(i,j)=temp(i,j-1)+1+i+j;
其实思路很简单,看代码大家都能懂。
源代码
#include<stdio.h>
int main()
{
int n,a=0,temp;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
temp=a;
for(int j=0;j<n-i;j++)
{
temp=temp+i+j+1;
if(j==(n-i-1))
printf("%d",temp);
else
printf("%d ",temp);
}
printf("\n");
a=a+i;
}
return 0;
}