原题链接:蛇行矩阵
解题思路:
观察即可 这类题 主要是找规律 找找关联
如图a 观察 可得 每一组斜线数据 从起点到终点 都是从小到大排列 因此我们只需要让上一个终点可以到下一个起点,就可以了,怎么找 加上坐标如图b 再看 所有的起点和终点关于 对角线对称所有的终点之间就差一个单位 (就是说 上一个终点(x,y) 和下一个终点(x,y++)差一个单位 y ++ 即可,而起点 和终点 关于对角线对称 所以终点(x,y) 他对应的起点则是(y,x))。这样 就让上一个终点通过关系 到下一个起点了。
当然 方法很多 ,这只是个人理解。阅览有问题点击原文
图 a 图b
注意事项:
参考代码:
#include<stdio.h> int main() { int n; while(~scanf("%d", &n)){ int a[110][110]={0};//初始化 int i=1,tn=n,x=0,y=0; // i代表 需要填的数值 tn循环的次数 x,y 起点坐标 while(tn--){ while(x>=0&&y<n)a[x--][y++]=i++; // 边界跳出条件 循环填数 x-- y++ 就代表 按左下到右上的对角线移动填数 x++;//刚跳出边界的x肯定变成-1了 因此要回溯下回到终点 y不用回 因为本来就要y++ int tem=x;x=y;y=tem;// 将终点变为起点 交换坐标 } for(x=0;x<n;x++){//打印 上三角 图形 for(y=0;y<n-x;y++) printf("%d ",a[x][y]); printf("\n"); } } return 0; }
0.0分
7 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复