poj-2488-dfs
来源:互联网 发布:linux 开机启动sh文件 编辑:程序博客网 时间:2024/05/29 18:10
题目大意:
给一个棋盘的长和宽,让你选择一条路径,可以让“马”走完整个棋盘。
做法:
遍历棋盘的每一个点作为起点。
从起点开始,dfs每条可能的路径。
由于当存在多条路径的时候,输出字典序小的那条路径,所以,在dfs的时候,一定要先遍历字典序小的路径。
当遍历到一条可行路径的时候输出这条路径。
#include<iostream>#include<stdio.h>#include<string.h>using namespace std;int map[100][100];int num[100];int st,end;int a,b;int leap;int xx[8]={-1,1,-2,2,-2,2,-1,1};int yy[8]={-2,-2,-1,-1,1,1,2,2};int pan(){ int i,j; for(i=1;i<=a;i++) { for(j=1;j<=b;j++) { if(map[i][j]==0)return 0; } } return 1;}void print(int x){ int i; int aa,bb; for(i=1;i<x;i++) { aa=num[i]%b; if(aa==0)aa=b; bb=(num[i]-aa)/b+1; // printf("%d %d\n",b,a); printf("%c%c",aa+'A'-1,bb+'0'); } printf("\n");}void search(int x,int y,int z){ if(x<1||y<1||x>a||y>b) { if(pan()) { print(z); leap=1; return ; } else return ; } if(map[x][y]!=0)return ; map[x][y]=z; num[z]=(x-1)*b+y; int i; for(i=0;i<8;i++) { search(x+xx[i],y+yy[i],z+1); if(leap==1)return ; } map[x][y]=0;}int main(){ int i,j,k,n; cin>>n; for(k=0;k<n;k++) { memset(map,0,sizeof(map)); cin>>a>>b; printf("Scenario #%d:\n",k+1); for(i=1;i<=b;i++) { for(j=1;j<=a;j++) { leap=0; memset(num,0,sizeof(num)); memset(map,0,sizeof(map)); search(j,i,1); if(leap)break; } if(j!=a+1)break; } if(i==b+1) printf("impossible\n"); printf("\n"); } return 0;}
- POJ 2488 _ DFS
- POJ 2488 DFS
- poj-2488-dfs
- DFS poj 2488
- POJ 2488(DFS)
- POJ 2488 DFS回溯
- POJ 2488 简单 DFS
- POJ 2488 DFS+回溯
- poj-2488-water-DFS
- poj 2488(DFS)
- poj 2488(dfs)
- POJ 2488 DFS
- poj 2488 dfs
- poj 2488 dfs
- poj 2488 DFS
- poj 2488 dfs+回溯
- POJ 2488(DFS)
- POJ 2488(DFS)
- Qt下使用GDB远程调试ARM板
- iOS中的一些内存问题,block,NSTimer,dealloc
- windows下安装mysql出现last warning:add firewall rule failed
- Android的NDK开发(4)————JNI数据结构之JNINativeMethod
- 转载--Android 开发 调用图库选择图片实现和参数详解
- poj-2488-dfs
- Android的NDK开发(3)————JNI数据类型的详解
- 10进制数转二进制表示
- Android的NDK开发(2)————利用Android NDK编写一个简单的HelloWorld
- Android的NDK开发(1)————Android JNI简介与调用流程
- 在windows下通过命令提示符运行php脚本 cmd运行php
- php中7个实用及常用的函数
- Android的NDK开发(5)————Android JNI层实现文件的read、write与seek操作
- [Effective Java Distilled] Item 3 通过使用私有构造方法或者枚举类型来强化单例属性