这道题是简单二维数组的应用,注意到每一行中两个数字分别差是多少和每行数组首元素是多少即可解决:
1 3 6 10 15 差分别为2,3 , 4 , 5
2 5 9 14 差分别为3, 4,5
故先假设差为2每次遍历列的时候差++即可;到新的一行时差为2+i即可,例如上面i为1时差是2+1;
再看首元素,分别为1,2 ,4 ,7 ,11
我们可以看到,当i>=1时只要用上一个元素加是自己的i即可
2=1+1;//i=1
4=2+2;//i=2
7+4+3;//i=3
11=7+4 //i=4
最终代码如下:
#include<stdio.h> int main() { int i,j,k,n; int a[100][100]; a[0][0]=1; scanf("%d",&n); for(i=0;i<n;i++) { if(i>=1) a[i][0]=a[i-1][0]+i; k=2+i; for(j=1;j<n-i;j++) { a[i][j]=a[i][j-1]+k; k++; } } for(i=0;i<n;i++) { for(j=0;j<n-i;j++) { printf("%d ",a[i][j]); } printf("\n"); } }
蛇形矩阵
最新推荐文章于 2024-05-22 14:38:36 发布