原题链接:蛇行矩阵
解题思路:
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
首先定义二维数组num[5][5],根据数字递增的规律观察行列之和的关系;
a[0][0]=1(行+列=0)
a[1][0]=2 a[0][1]=3(行+列=1)
a[2][0]=4 a[1][1]=5 a[0][2]=6(行+列=2)
...
a[4][0]=11 ......a[0][4]=15(行+列=4)
由此可以看出,当我们输入n为5时,通过控制行列之和<5可以解决该问题
在行列之和为一定值的情况下,每执行一次循环,让行数减1,列数加1
注意事项:
1、输入n,控制行列之和sum<n(注意:sum不能等于n(二维数组性质))
2、初始化a=1,每执行一次循环先赋值,再执行a++
3、输出时,注意不是输出整个二维数组,只输出半个二维数组,剩下半个二维数组是没有值的。
参考代码:
#include<stdio.h> int main(void) { int i,j,sum,n; scanf("%d",&n); int a=1; int num[5][5]; for(sum=0;sum<n;sum++)//行加列=sum { for(i=sum,j=0;i>=0&&j<=sum;i--,j++)//在sum值固定的情况下,行列变换来赋值 { num[i][j]=a; a++; } } for(i=0;i<=n;i++) { for(j=0;j<=n-1-i;j++) printf("%d ",num[i][j]);//输出每一项对应的值 printf("\n");//每一行输出完后进行换行 } }
0.0分
12 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复