首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

搜寻:zoj 2100 Seeding(DFS)

2012-12-21 
搜索:zoj 2100 Seeding(DFS)【转】http://blog.csdn.net/zxy_snow/article/details/5941464#include stdio.

搜索:zoj 2100 Seeding(DFS)

【转】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;}

?

热点排行