第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

ZOJ Problem Set - 2100

標(biāo)簽:
產(chǎn)品

ZOJ Problem Set - 2100

Seeding

Time Limit: 1 Second      Memory Limit: 32768 KB

It is spring time and farmers have to plant seeds in the field. Tom has a nice field, which is a rectangle with n * m squares. There are big stones in some of the squares.

Tom has a seeding-machine. At the beginning, the machine lies in the top left corner of the field. After the machine finishes one square, Tom drives it into an adjacent square, and continues seeding. In order to protect the machine, Tom will not drive it into a square that contains stones. It is not allowed to drive the machine into a square that been seeded before, either.

Tom wants to seed all the squares that do not contain stones. Is it possible?


Input

The first line of each test case contains two integers n and m that denote the size of the field. (1 < n, m < 7) The next n lines give the field, each of which contains m characters. 'S' is a square with stones, and '.' is a square without stones.

Input is terminated with two 0's. This case is not to be processed.


Output

For each test case, print "YES" if Tom can make it, or "NO" otherwise.


Sample Input

4 4
.S..
.S..
....
....
4 4
....
...S
....
...S
0 0


Sample Output

YES
NO

=============

典型的DFS题,很不错。

题目很简单,从左上角出发,判断是否能完全把地耕玩(拖拉机不能在石块和已经耕好的地上行驶。)

?

#include <stdio.h>#include <string.h>int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}};//四个方向 char map[10][10];//定义一张地图 int done;int Flag;int n,m;void dfs(int x,int y) {  int i;  if(x<1 || y<1 || x>n || y>m)   return;//判断是否越界    done++;   if(done==n*m)//如果成功则返回   {     Flag=1;     return;  }  for(i=0;i<4;i++)  {     if(map[x+dir[i][0]][y+dir[i][1]]=='.')     {               map[x+dir[i][0]][y+dir[i][1]]='S';//标记已经耕过的土地          dfs(x+dir[i][0],y+dir[i][1]);     }  }  done--;  map[x][y]='.';}int main(){   int i,j;     memset(map,'S',sizeof(map));   while(scanf("%d%d%*c",&n,&m)!=EOF)   {      if(n==0 && m==0)      break;      done=0;      Flag=0;      for(i=1;i<=n;i++)      {                   for(j=1;j<=m;j++)         {            scanf("%c",&map[i][j]);            if(map[i][j]=='S')            done++;         }         getchar();             }                map[1][1]='S';      dfs(1,1);      if(Flag==1)      printf("YES\n");      else      printf("NO\n");   }

?

   return 0; }
點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消