nyoj_33 蛇形填数
2016-04-29 10:58
309 查看
蛇形填数
时间限制:3000 ms | 内存限制:65535 KB难度:3
描述在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方陈为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
输入直接输入方陈的维数,即n的值。(n<=100)
输出输出结果是蛇形方陈。
样例输入
3
样例输出
7 8 1 6 9 2 5 4 3
分析:
我的方法有点蠢了,用了深搜
代码:
#include<cstdio> #include<cstring> int map[105][105]; int dir[4][2]={{1,0},{0,-1},{-1,0},{0,1}}; int n; void dfs(int x,int y,int t,int d) { if(t==n*n) return; if(x+dir[d][0]>=1&&x+dir[d][0]<=n&&y+dir[d][1]>=1&&y+dir[d][1]<=n&&!map[x+dir[d][0]][y+dir[d][1]]) { map[x+dir[d][0]][y+dir[d][1]]=t+1; dfs(x+dir[d][0],y+dir[d][1],t+1,d); } else { d=(d+1)%4; map[x+dir[d][0]][y+dir[d][1]]=t+1; dfs(x+dir[d][0],y+dir[d][1],t+1,d); } } int main() { memset(map,0,sizeof(map)); scanf("%d",&n); map[1] =1; dfs(1,n,1,0); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(j!=n) printf("%d ",map[i][j]); else printf("%d\n",map[i][j]); return 0; }
相关文章推荐
- 缓存同步的问题
- 思路很重要!搞定完美配色方案应当思考的八个问题
- Android Fragment的三种应用方式
- 卷积和池化的总结
- 关于JMeter的CSV Data Set Config的源码改写(包括了部分界面等代码的分析)
- C++ builder数据库连接大全
- 最长上升子序列问题总结
- 最长上升子序列问题总结
- win10 UWP 标签
- 智能化升级服务
- emeditor14注册码
- 73、JAVA中int、String的类型转换
- 使用NSOperation以及NSOperationQueue
- nyoj_31 5个数求最值
- MarkDown语法备查
- 首页统计脚本
- 找出linux服务器IO占用高的程序
- windows本地script脚本恶意代码分析(带注释)
- delphi.memory.分配及释放---New/Dispose, GetMem/FreeMem及其它函数的区别与相同
- 学习规划