11月25日学习小结
2021/11/25 23:40:06
本文主要是介绍11月25日学习小结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.没有太多的时间留给我去抱怨,可今天的收获是真的很小,程序设计基础有实验题要做,计算机基础课程也有作业,没有留出足够的时间来刷题,学长今天讲了两道题,但我也只是听懂了一半一半,还没有完全消化,但我好在还是提交过了两道题。
蛇形填数:(H - 蛇形填数)
例题如下:
在 n×n 方阵里填入 1,2, \cdots ,n \times n1,2,⋯,n×n,要求填成蛇形。例如 n=4 时方阵为:
10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4
输入格式
直接输入方陈的维数,即 n*n 的值。(n \le 100n≤100)
输出格式
输出结果是蛇形方阵。
Sample Input
3
Sample Output
7 8 1 6 9 2 5 4 3
解题思路如下:
这道题的规律在于数字递加且先向下再向左,再向上,最后向右,依次循环填数,但如果地址值非零则不需要填,所以代码如下:
#include <stdio.h> #include <iostream> #include <algorithm> using namespace std; int main() { int a[100][100]={0}; int n,sum=0; scanf("%d",&n); int x=0,y=n-1; a[x][y] = ++sum; while(sum<n*n){ //最后的值肯定为n*n所以以此为填数结束条件 while(x+1<n&&!a[x+1][y]) a[++x][y] = ++sum;//刚进入时x=0,y=n-,sum=1; while(y-1>-1&&!a[x][y-1]) a[x][--y] = ++sum;//刚进入时x=n,y=0,sum = n; while(x-1>-1&&!a[x-1][y]) a[--x][y] = ++sum;//刚进入时x=n,y=0,sum = 2n; while(y+1<n&&!a[x][y+1]) a[x][++y] = ++sum; //刚进入时x=0,y=1,sum = 3n } for(int i=0;i<n;i++){ for(int j = 0;j<n;j++){ cout<<a[i][j]<<" "; } cout<<endl; } return 0; }
这道题主要有两个填数条件需要考虑与判断,也是思考此类问题的难点吧。
例x+1是否在数组内有合法内存,a[x+1][y]该数是否非零。
这篇关于11月25日学习小结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南