原题链接:蛇行矩阵
解题思路以及注意事项:
用while循环判断用户输入。
外层循环执行一次,就会排好一行,里层循环执行一次,会排好第i行的第j+1个数。
第i行第j个数比第j+1个数小j+i+2。
第i行第j个数比第i+1行第j个数小i+1。
运行 i=0 1 3 6 10 15 虽说是第1行,但在代码里面是i表示行,在数组里面i从0开始,第一行为i=0
i=1 2 5 9 14
i=2 4 8 13
i=3 7 12
i=4 11
方便大家对着看规律
实例代码:
#include<stdio.h>
int main()
{
int N,i,j,a[100][100];
while(scanf("%d",&N)!=EOF)
{
a[0][0]=1;
printf("%d",a[0][0]);
for(i=0;i<N-1;i++)
{
a[i+1][0]=a[i][0]+i+1;//按规律排好第二行的第一个数,第二行的第一个数比第一行的第一个数大 第一行(i=0)+1
for(j=0;j<N-i-1;j++) //接上文:为下面的做准备,注意i从0开始,
{
a[i][j+1]=a[i][j]+j+i+2; //第一行第j+1个数比第j个数大j+第一行(i=0)+2。其中j也是从0开始
printf(" %d",a[i][j+1]);
} //到这里其实就排好了第1行和第二行的第一个数
printf("\n%d",a[i+1][0]); //换行
}
}
printf("\n");
return 0;
}看看大家还有什么不懂的,请在下方评论区留言
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
while(scanf("%d",&N)!=EOF),这一句中末尾的!=EOF是什么意思?在什么条件下要用到它?谢谢!