HDU 1501 Zipper(DFS)

题目链接

不加记忆化 搜索 TLE,加上15ms.....

 1 #include <stdio.h>

 2 #include <string.h>

 3 char str1[201],str2[201],str3[402];

 4 int p[201][201];

 5 int z,len;

 6 void dfs(int a,int b,int x)

 7 {

 8     if(z) return ;

 9     if(p[a][b]) return ;

10     p[a][b] = 1;

11     if(x > len-1)

12     {

13         z = 1;

14         return ;

15     }

16     if(str1[a] == str3[x])

17     {

18         dfs(a+1,b,x+1);

19 

20     }

21     if(str2[b] == str3[x])

22     {

23         dfs(a,b+1,x+1);

24     }

25 }

26 int main()

27 {

28     int num = 0,t;

29     scanf("%d%*c",&t);

30     while(t--)

31     {

32         scanf("%s%s%s",str1,str2,str3);

33         memset(p,0,sizeof(p));

34         num ++;

35         len = strlen(str3);

36         z = 0;

37         dfs(0,0,0);

38         printf("Data set %d: ",num);

39         if(z)

40         printf("yes\n");

41         else

42         printf("no\n");

43     }

44     return 0;

45 }

你可能感兴趣的:(zip)