P5731 【深基5.习6】蛇形方阵
2022/1/26 6:07:43
本文主要是介绍P5731 【深基5.习6】蛇形方阵,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
P5731 【深基5.习6】蛇形方阵
题目描述
给出一个不大于 9 的正整数 n,输出n×n 的蛇形方阵。
从左上角填上 1 开始,顺时针方向依次填入数字,如同样例所示。注意每个数字有都会占用 3 个字符,前面使用空格补齐。
输入格式
无
输出格式
无
输入输出样例
输入 #1复制
4
输出 #1复制
1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7
题解
我没有用常规的算法做,而是模拟,像是在玩贪吃蛇,一碰到边或是已填充的就转弯
python
n=eval(input()) matrix = [[0 for j in range(n)] for i in range(n)] x,y=0,0 towards=['y=y+1','x+=1','y-=1','x-=1'] t=0 for i in range(1,n*n+1): matrix[x][y]=i exec(towards[t]) if x>n-1 or y>n-1 or matrix[x][y]!=0: exec(towards[(t+2)%4]) t=(t+1)%4 exec(towards[t]) for i in (matrix): for j in i: print(f"{j: >3}",end='') print()
c++
同样是模拟,这篇是借鉴大佬改的,用了0的布尔值为否的特性来缩短代码量,相当优雅
#include <iostream> using namespace std; int a[15][15]; int main() { int n,k=1,x=1,y=0; cin>>n; while (k<=n*n){ while(y<n&&!a[x][y+1])a[x][++y]=k++; //→ while(x<n&&!a[x+1][y])a[++x][y]=k++; //↓ while(y>1&&!a[x][y-1])a[x][--y]=k++; //← while(x>1&&!a[x-1][y])a[--x][y]=k++; //↑ } for (int i=1;i<=n;i++){ for (int j=1;j<=n;j++)printf("%3d",a[i][j]); cout<<endl; } return 0; }
这篇关于P5731 【深基5.习6】蛇形方阵的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?