蓝桥杯备考:学会利用方向向量

[复制链接]
发表于 2025-10-8 00:01:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

我们先看一下这道标题,我们的数字是顺时针填的,也就是先从右,再从下,再去左,再去上,我们只要按这个序次来写方向向量,然后不停的模仿就行了,非常的简单
  1. #include <iostream>
  2. using namespace std;
  3. int dx[] = {0,1,0,-1};
  4. int dy[] = {1,0,-1,0};
  5. const int N = 15;
  6. int a[N][N];
  7. int main()
  8. {
  9.         int n;cin >> n;
  10.         int cnt = 1;
  11.         int x = 1,y=1;
  12.         int pos = 0;
  13.         while(cnt<=n*n)
  14.         {
  15.                 a[x][y] = cnt;
  16.                 cnt++;
  17.                 int px = x+dx[pos];
  18.                 int py = y+dy[pos];
  19.                 if(px<1 || py<1 || px>n || py>n || a[px][py])
  20.                 {
  21.                         pos = (pos+1)%4;
  22.                         px=x+dx[pos];
  23.                         py=y+dy[pos];
  24.                 }
  25.                 x = px;y=py;
  26.                
  27.         }
  28.         for(int i = 1;i<=n;i++)
  29.         {
  30.                 for(int j = 1;j<=n;j++)
  31.                 {
  32.                         printf("%3d",a[i][j]);
  33.                 }
  34.                 puts("");
  35.         }
  36.        
  37.         return 0;
  38. }
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表