解题思路:

观察即可  这类题 主要是找规律 找找关联

如图a 观察 可得 每一组斜线数据 从起点到终点 都是从小到大排列 因此我们只需要让上一个终点可以到下一个起点,就可以了,怎么找 加上坐标如图b 再看 所有的起点和终点关于 对角线对称所有的终点之间就差一个单位 (就是说 上一个终点(x,y) 和下一个终点(x,y++)差一个单位  y ++ 即可,而起点 和终点 关于对角线对称  所以终点(x,y) 他对应的起点则是(y,x))。这样 就让上一个终点通过关系 到下一个起点了。

当然 方法很多 ,这只是个人理解。阅览有问题点击原文



1545108914535516.pngQQ图片20181218125618.png


                         图 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;
}


点赞(5)
 

0.0分

7 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 3 条评论

吴习文 5年前 回复TA
思想好超前
吴习文 5年前 回复TA
@吴习文 你的思想好超前
吴习文 5年前 回复TA
请教您溯下回到终点是要干啥,,,您咋想的