poj 1154 dfs
2012-02-01 14:18
246 查看
题意:只能上下左右的移动,问最多能找到多少个不同的字母,相同字母的位置不能移动到。
思路:深搜,其中标记数组的方式是把字母映射到整型数组里。
思路:深搜,其中标记数组的方式是把字母映射到整型数组里。
#include<iostream> using namespace std; char map[30][30]; bool vis[27];//字母映射的方式来标记 int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}}; int n,m,ans;//矩阵的大小,和输出的个数 void dfs(int step,int i,int j) { int x,y; if(step>ans) ans=step; for(int k=0;k<4;k++) { x=i+dir[k][0]; y=j+dir[k][1]; //printf("x=%d,y=%d\n",x,y); if(!vis[map[x][y]-'A']&&x>=0&&x<n&&y>=0&&y<m) { //printf("%d %d\n",x,y); vis[map[x][y]-'A']=1; dfs(step+1,x,y); //printf("回溯\n"); //system("pause"); vis[map[x][y]-'A']=0;//回溯的时候不需要去管ans,在判断时候会随之更新 } } //printf("返回\n"); } int main() { int i,j,p; while(scanf("%d%d",&n,&m)!=EOF) { memset(vis,0,sizeof(vis)); for(i=0;i<n;i++) cin>>map[i];//一用%c输入就会意外出错。。。 ans=0; vis[map[0][0]-'A']=1; dfs(1,0,0); printf("%d\n",ans); } }
相关文章推荐
- POJ 1154 LETTERS dfs
- POJ 1154 Letter game (DFS)
- POJ1154--LETTERS(DFS)
- poj 1154(dfs深度优先遍历)
- poj dfs相关之1154 LETTERS
- POJ 1154题解,此题不难理解方法就是DFS,属于水题。不过有一些细节要注意。
- POJ2488 -- POJ1154-- DFS
- DFS简单题 杭电1241 POJ 1154
- POJ1154(DFS回溯)
- !POJ 1154--DFS(WA了20次)
- poj 1154 LETTERS dfs入门题
- poj 1154 LETTERS(DFS水!)
- POJ 1562 DFS水题练习
- POJ 2488 A Knight's Journey (DFS + 记录路径)
- POJ 1315 Don't Get Rooked(dfs)
- poj--2236--棋盘问题(dfs)
- poj1562 Oil Deposits 简单搜索,dfs和bfs都行,我用的bfs
- poj 棋盘问题(经典DFS)(枚举)
- poj 2386lake counting(水水的dfs)
- poj 2386 dfs 水