poj 2488 简单的搜索
来源:互联网 发布:网络金融理财管理 编辑:程序博客网 时间:2024/05/17 12:53
传送门
题意:问能否从某点出发,走日字遍历所有点,每个点只经过1次。能则输出字典序最小的路径。
思路:昨天看到群里有人探讨这题,今天就顺手做了。这里就是基本的DFS,关于字典序,只要注意搜索下一个点的顺序就能保证。
#include<iostream>#include<cstdio>#include<cstring>using namespace std;int m,n;bool v[50][50];int num;int ok;int xx[8]={-1,1,-2,2,-2,2,-1,1};int yy[8]={-2,-2,-1,-1,1,1,2,2};int ax[50],ay[50];void dfs(int x,int y,int s){ v[x][y]=1; ax[s]=x; ay[s]=y; if(s==m*n) { ok=1; printf("Scenario #%d:\n",num++); for(int i=1;i<=m*n;i++) { printf("%c%d",ay[i]+64,ax[i]); } printf("\n"); return; } for(int i=0;i<8;i++) { if(ok)return; if(x+xx[i]>0&&x+xx[i]<=m&&y+yy[i]>0&&y+yy[i]<=n&&v[x+xx[i]][y+yy[i]]==0) { dfs(x+xx[i],y+yy[i],s+1); } } v[x][y]=0;}int main(){ int t; num=1; scanf("%d",&t); while(t--) { scanf("%d%d",&m,&n); memset(v,0,sizeof(v)); ok=0; for(int j=1;j<=n;j++) { if(ok)break; for(int i=1;i<=m;i++) { dfs(i,j,1); if(ok)break; } } if(!ok)printf("Scenario #%d:\nimpossible\n",num++); printf("\n"); } return 0;}
- poj 2488 简单的搜索
- poj 1979 简单的搜索
- poj 3278 简单的搜索
- poj 1562 简单的BFS搜索
- 简单搜索1979@POJ
- poj 3909 简单 搜索
- poj 1166 简单搜索
- poj~1321(简单搜索)
- poj-1321(简单搜索)
- poj 1321 简单搜索
- POJ 1033-Defragment 简单搜索
- poj 1033 Defragment 简单搜索
- POJ-3279(Fliptile)--简单搜索
- poj 2251 简单搜索bfs
- poj 3278 简单搜索bfs
- POJ-----1321搜索简单题
- 简单搜索poj 2243(水
- POJ 2386 Lake Counting 简单的DFS搜索
- java SWT界面的托盘显示
- Hadoop的源起----lucene
- Spring的核心思想(百度知道搜索到的神答复)
- 人生
- tomcat相关问题
- poj 2488 简单的搜索
- Android4.0.3 Launcher源码研究 1
- 一个Web Project引用多个Java Project在Eclipse下的配置
- Duilib中的控件消息
- 使用GetWindowRect()一点总结
- Android 获取本机的mac和wifi的BSSID(mac)以及其他信息
- 查看linux操作系统版本号
- Activiti Modeler不能部署中文问题
- 画线,矩形,图片: