C语言一菜鸟级


私信TA

用户名:LHL

访问量:63138

签 名:

AC总是意料之外 ^_^

等  级
排  名 47
经  验 11162
参赛次数 5
文章发表 56
年  龄 24
在职情况 在职
学  校 四川工商学院
专  业 通信工程

  自我简介:

C语言 蓝桥杯 ACM 新人 欢迎大佬 前来指导 交流 本人 博客https://fivecc.blog.csdn.net/

解题思路:

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

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


 

0.0分

7 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区

思想好超前
2019-11-02 11:14:55
请教您溯下回到终点是要干啥,,,您咋想的
2019-11-02 11:12:14
  • «
  • 1
  • »