程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 九度教程第92題

九度教程第92題

編輯:C++入門知識

測試數據大放送: 4 4 5 S.X. ..X. ..XD .... 3 4 5 S.X. ..X. ...D 2 2 1 S. .D 8 8 7 .DXS...X ........ XX..XX.. .X.X.X.X ..X..... X....X.. ........ XXXX.... 5 4 18 S... .... .... .... ...D 6 6 10 S..... ...... ...... ...... ...... .....D 2 3 2 SDX ..X 2 2 3 SD .. 2 2 2 SD XX 4 4 6 .S.. XXX. XXX. XXXD 5 4 8 S... .XX. .X.. .X.X .... 3 3 3333 .S. ... ... 2 2 1 SD .. 1 5 4 S...D 4 5 5 .S... ..X.. .XDX. ..X.. 2 4 7 SD.. .... 2 2 3 S. D. 4 4 9 S..X X.X. ..XD .... 0 0 0   輸出: NO YES NO NO NO YES NO YES NO NO NO NO YES YES NO YES YES YES   C語言源碼: [cpp]  #include<stdio.h>   int mark[10][10];   char s[10][10];   int n,m,start1,start2,end1,end2,t,flag;   void dfs(int i,int j,int time)   {       if(flag==-1)       {           if(time==t)           {               if(i==end1&&j==end2)                   flag=1;           }               else                {                   if(i>0&&mark[i-1][j]==-1&&s[i-1][j]!='X')                   {                       if(((time!=t-1)&&s[i-1][j]!='D')||((time==t-1)&&(s[i-1][j]=='D')))                       {                           mark[i-1][j]=1;                           dfs(i-1,j,time+1);                           mark[i-1][j]=-1;                       }                   }                   if(i<n-1&&mark[i+1][j]==-1&&s[i+1][j]!='X')                   {                       if(((time!=t-1)&&s[i+1][j]!='D')||((time==t-1)&&(s[i+1][j]=='D')))                       {                           mark[i+1][j]=1;                           dfs(i+1,j,time+1);                           mark[i+1][j]=-1;                       }                   }                   if(j<m-1&&mark[i][j+1]==-1&&s[i][j+1]!='X')                   {                       if(((time!=t-1)&&s[i][j+1]!='D')||((time==t-1)&&(s[i][j+1]=='D')))                       {                           mark[i][j+1]=1;                           dfs(i,j+1,time+1);                           mark[i][j+1]=-1;                       }                   }                   if(j>0&&mark[i][j-1]==-1&&s[i][j-1]!='X')                   {                       if(((time!=t-1)&&s[i][j-1]!='D')||((time==t-1)&&(s[i][j-1]=='D')))                       {                           mark[i][j-1]=1;                           dfs(i,j-1,time+1);                           mark[i][j-1]=-1;                       }                   }           }       }   }          int main()   {       int i,j;       scanf("%d %d %d",&n,&m,&t);       while(n||m||t)       {           for(i=0;i<n;i++)               scanf("%s",s[i]);           for(i=0;i<n;i++)               for(j=0;j<m;j++)                   mark[i][j]=-1;           for(i=0;i<n;i++)               for(j=0;j<m;j++)                   if(s[i][j]=='S')                       goto loop1;           loop1:start1=i;           start2=j;           for(i=0;i<n;i++)               for(j=0;j<m;j++)                   if(s[i][j]=='D')                       goto loop2;           loop2:end1=i;           end2=j;           flag=-1;           mark[start1][start2]=1;           dfs(start1,start2,0);           if(flag==-1)               printf("NO\n");           else               printf("YES\n");           scanf("%d %d %d",&n,&m,&t);       }   }    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved