原题链接:蛇行矩阵
解题思路:
观察即可 这类题 主要是找规律 找找关联
如图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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复