Big Data Release: 4 4 5S. x... x... XD .... 3 4 5S. x... X .... d2 2 1 s .. d8 7. DXS... X ........ XX .. XX... x. x. x. X .. X ..... X .... X .......... XXXX .... 5 4 18S .................. d6 6 10S .................................. d2 3 2SDX .. x2 2 3SD .. 2 2 2SDXX4 4 4 6. S .. XXX. XXX. XXXD5 4 8S .... XX .. x... x. X .... 3 3333. S ....... 2 2 1SD .. 1 5 4S... d4 5 5. S ..... x... XDX... X .. 2 4 7SD ...... 2 2 3 s. d.4 4 9S .. XX. x... XD .... 0 0 0 output: NOYESNONONOYESNOYESNO Nononoyesyesnoyesyesyes c language source code: [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", & 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", & n, & m, & t );}}