今天大一考试C语言的时候看见了这道题,下面是我转载的一个大佬的博客,自认为分析的很清楚,特来分享一下。

**原文地址:

https://blog.csdn.net/jack22333/article/details/78847698

**
题目如下图所示:

解题思路分析:

我们按照图中标出的箭头指向,逐一的赋值整个矩阵。

具体思路:

  1. 初始的时候,行标i=0,列标j=0,data[i][j]=0,此时k = 1(k表示当前矩阵位置到下一位置的运动方向);
  2. 当data移动到下一个位置后,此时需要把k变为它当前位置的移动方向。
    1. k = 1的时候,k的下一个运动方向可能是 2或者4;
      A. data位于矩阵的第一行时,k变为2;
      B. data位于矩阵的最下面一行时,k变为4.
    2. k = 2的时候,k的下一个运动方向可能是 1或者2或者3;
      A. data位于矩阵的第一列时,k变为3;
      B. data位于矩阵的最下面一行时,k变为1;
      C. data位于矩阵其它位置时,k仍为2.
    3. k = 3的时候,k的下一个运动方向可能是 2或者4;
      A. data位于矩阵的第一列时,k变为4;
      B. data位于矩阵的最后一列时,k变为2.
    4. k = 4的时候,k的下一个运动方向可能是1或者3或者4;
      A. data位于矩阵的第一行时,k变为1;
      B. data位于矩阵的最后一列时,k变为3;
      C. data位于矩阵其它位置时,k仍为4.
      此外,有左下顶角和右上顶角的位置需要额外关注。
      主体代码如下:
```bash
int n;
int i = 0; //行
int j = 0; //列
int k = 1; //运动方向. k =1 表示运动方向为从左往右移动;k=2 表示从右上角往左下角移动; k=3 表示向下移动 ;k=4 表示从左下角网右上角移动
int data [100][100];
data[0][0] = 1;
printf("Input n:\n");
scanf("%d",&n);
while( i!=n-1 || j !=n-1){
if(k == 1){
data[i][j+1] = data[i][j] + 1;
j = j + 1;
if(i == n-1){
k = 4;
}else{
k = 2;
}
}else if(k == 2){
data[i+1][j-1] = data[i][j] + 1;
j = j - 1;
i = i +1;
if( j == 0 && i != n-1){
k = 3;
}else if( i == n-1){
k = 1;
}else{
k = 2;
}
}else if(k == 3){
data[i+1][j] = data[i][j] + 1;
i = i+1;
if( j == n-1){
k = 2;
}else {
k = 4;
}
}else if(k == 4){
data[i-1][j+1] = data[i][j] + 1;
j = j + 1;
i = i - 1; if(i == 0 && j != n-1){
k = 1;
}else if( j == n-1 )
{
k = 3;
}else{
k = 4;
}
}
}
//显示矩阵
for(int a=0;a<n;a++){
for(int b=0;b<n;b++){
printf("%d\t",data[a][b]);
}
printf("\n");
}

————————————————
版权声明:本文为CSDN博主「香蕉苹果橘子汁」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:[https://blog.csdn.net/jack22333/article/details/78847698](https://blog.csdn.net/jack22333/article/details/78847698)

最新文章

  1. mac搭建测试服务器
  2. 《Entity Framework 6 Recipes》中文翻译系列 (12) -----第三章 查询之使用SQL语句
  3. 深入浏览器兼容 细数jQuery Hooks 属性篇
  4. 你真的了解UITextField吗?
  5. OCS 开放缓存服务
  6. SQL 的 ISNULL 与 NULLIF 运算符
  7. Selenium2学习-036-WebUI自动化实战实例-034-JavaScript 在 Selenium 自动化中的应用实例之六(获取 JS 执行结果返回值)
  8. 从一个前端项目实践 Git flow 的流程与参考
  9. SQL Server Management Studio的对象资源管理器的使用
  10. Powershell Switch 条件
  11. 一个商品练习的py
  12. 企业级自动化运维工具应用实战-ansible
  13. python按行遍历一个大文件,最优的语法应该是什么?
  14. 解决jar包依赖:Spring IO platform推出bom
  15. Gource 方便的软件版本可视化录制工具
  16. java.lang.NoClassDefFoundError: net.tsz.afinal.FinalHttp
  17. js将滚动条滚动到指定位置的方法
  18. 微信支付id出现的重复支付解决方法和app应用中多种支付方式之间的对比
  19. URAL 1741 Communication Fiend
  20. EF基础知识小记五(一对多、多对多处理)

热门文章

  1. MVC部署出现403.14问题记录
  2. 2020-2021 “Orz Panda” Cup Programming Contest
  3. CSS文本溢出效果&amp;滚动条样式设置
  4. 如何自定义Kubernetes资源
  5. kafka监控之topic的lag情况监控
  6. create-react-app 基于ts项目,使用react-router-dom搭建项目
  7. 工作3年,看啥资料能月薪30K?
  8. DataTable添加checkbox实现表格数据全选,单选(点选)
  9. axios前端加密通讯的处理
  10. (七)、touch--创建文件或者更新时间戳