您的位置:首页 > 其它

poj 2488 dfs

2015-02-04 12:42 281 查看
2015/2/4

dfs,要按字典序输出。

要用int tp[8][2]={{-2,-1},{-2,1},{-1,-2},{-1,2},{1,-2},{1,2},{2,-1},{2,1}};

不然就要全部的路径比较了。。

#include<map>
#include<queue>
#include<stack>
#include<cmath>
#include<vector>
#include<climits>
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>

using namespace std;
typedef long long ll;  

#define mod 10007
#define lson pos<<1,l,mid
#define sc(n) scanf("%d",&n)
#define rson pos<<1|1,mid+1,r
#define pr(n) printf("%d\n",n)
#define met(n,m) memset(n, m, sizeof(n))
#define F(x,y,i) for(int i = x;i > y; i--)
#define f(x,y,i) for(int i = x;i < y; i++)
#define ff(x,y,i) for(int i = x;i <= y; i++)
#define FF(x,y,i) for(int i = x;i >= y; i--) 

const int N=100500;
const int inf = INT_MAX;

int Max(int a,int b)
{
	return a>b?a:b;
}

int Min(int a,int b)
{
	return  a<b?a:b;
}

int vis[30][30];
int ans[1000][2];
int temp,cnt;
int n, m, tot, x;
int tp[8][2]={{-2,-1},{-2,1},{-1,-2},{-1,2},{1,-2},{1,2},{2,-1},{2,1}}; 

int dfs(int i,int j)
{
	
	
	vis[i][j] = 1;
	ans[cnt][0]  = i;
	ans[cnt++][1]= j;
	if(cnt >= n*m)return 1;
	f(0,8,k)
	{
		int xx = i+tp[k][0];
		int yy = j+tp[k][1];
		if(xx <= n && xx >= 1 && yy <= m && yy >= 1)
		{
			if(!vis[xx][yy])
			{
				if(dfs(xx,yy))
				 return 1;
			}
		}
	} 
	
	vis[i][j] = 0;
	cnt--;
	
	return 0;
}

int main()  
{  

    while(~scanf("%d",&tot))
    {
    	f(0,tot,k)
    	{
	    	scanf("%d%d",&m,&n);
	    	 temp = 0;
	    	f(1,n+1,i)
	    	{
	    		f(1,m+1,j)
	    		{
	    			cnt = 0;
	    			met(vis,0);
	    			dfs(i,j);
	    			
	    			if(cnt >= n*m)
	    			{
	    				
			    		temp = 1;
			    		break;
			    	}
	    		}
	    		if(temp)break;
	    	}
	    	
	    
	    	
	    	
	    	    printf("Scenario #%d:\n",k+1);
	    		if(!temp)printf("impossible");
	    		else
	    		{
					f(0,cnt,i)
	    			{
	    				printf("%c%d",ans[i][0]-1+'A',ans[i][1]);
	    			}
	    				
		    		
		    	}
				printf("\n\n");

	    }
		    	
    }
    return 0;  
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: