读书人

搜寻:zoj 2100 Seeding(DFS)

发布时间: 2012-12-21 12:03:49 作者: rapoo

搜索:zoj 2100 Seeding—FS)

【转】http://blog.csdn.net/zxy_snow/article/details/5941464

#include <stdio.h>#include <stdlib.h>#include <iostream>using namespace std;int visit[8][8];int n,m,ok;int dir[8] = {1,0,-1,0,0,1,0,-1};void input(){ char x; ok = 0; for(int i=1; i<=n; i++) {  for(int k=1; k<=m; k++)  {   scanf("%c",&x);   switch(x)   {    case '.': visit[i][k] = 0; break;    case 'S': visit[i][k] = 1; break;   }  }  getchar(); }}int traverse(){ for(int i=1; i<=n; i++)  for(int j=1; j<=m; j++)   if( !visit[i][j] )    return 0; return 1;}void DFS(int i,int j){ visit[i][j] = 1; if( traverse() ) {  ok = 1;  return ; } for(int k=0; k<8; k+=2) {  int a = i + dir[k];  int b = j + dir[k+1];  if( a>=1 && a<=n && b>=1 && b<=m && !visit[a][b] )   DFS(a,b); } if( !ok )  visit[i][j] = 0; return ;}int main(void){ while( scanf("%d %d",&n,&m)!=EOF && n) {  getchar();  input();  DFS(1,1);  ok == 1 ? printf("YES/n") : printf("NO/n"); }return 0;}

?

读书人网 >编程

热点推荐