您的位置:首页 > 健康 > 美食 > 兰州市政建设集团官网_网站页面设计公司电话_西安网站建设排名_网络营销的内容主要有哪些

兰州市政建设集团官网_网站页面设计公司电话_西安网站建设排名_网络营销的内容主要有哪些

2025/3/1 13:32:51 来源:https://blog.csdn.net/in_seattle/article/details/145861079  浏览:    关键词:兰州市政建设集团官网_网站页面设计公司电话_西安网站建设排名_网络营销的内容主要有哪些
兰州市政建设集团官网_网站页面设计公司电话_西安网站建设排名_网络营销的内容主要有哪些

🌈个人主页:羽晨同学 

 💫个人格言:“成为自己未来的主人~” 

题目链接 

P5731 【深基5.习6】蛇形方阵 - 洛谷

解题思路

对于这道题目来说,这道题题目中很重要的就是模拟实现顺时针填入数字的过程,而一个很好的,可以实现这个过程的方法就是利用数组,这个应该怎么理解呢?

比如说,我们创建两个数组,一个叫做dx,一个叫做dy,分别表示x轴的操作和y轴的操作。

还有一点需要注意的就是,当最后输出的时候,要有三位,不足三位的,前面用空格补齐,这种就适合使用printf("%3d",num);这种格式来进行实现 

通过这个数组,我们就可以模拟填入数字的这个过程,我们接下来实现一下相关的代码。

代码实现

#include<iostream>
using namespace std;
int arr[10][10];
//创建模拟填数字的数组
int dx[] = { 1,0,-1,0 };
int dy[] = { 0,1,0,-1 };
int main()
{int n; cin >> n;int pos = 0;//指向数组的坐标int cur = 1;int x = 1, y = 1;//当前的坐标 while (cur <= n * n){arr[y][x] = cur;int px = x + dx[pos];int py = y + dy[pos];if (px<1 || py<1 || px>n || py>n || arr[py][px])//边界情况 {pos = (pos + 1) % 4;}y = y + dy[pos];x = x + dx[pos];cur++;}for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){printf("%3d", arr[i][j]);}cout << endl;}return 0;
}

 好了,今天的内容就到这里,我们明天再见。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com