码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 1501:(DFS)

时间:2015-08-05 17:58:03      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:

不知道为什么一直超时,最后加了个剪枝就过了:合成单词的最后一个字母,应该至少和之前两个单词中的一个的最后一个字母相同

#include"cstdio"
#include"cmath"
#include"cstring"
#include"iostream"
#define MAXN 205
using namespace std;
char arr[4][MAXN];
int len[4];
int vis[MAXN][MAXN];
int p=1,ok;
void dfs(int x,int y,int z)
{   if(ok) return;
    if(z>=len[3]) {ok=1;return;}
    if(vis[x][y]) return;
    if(arr[1][x]==arr[3][z]){
        vis[x][y]=1;
        dfs(x+1,y,z+1);
        vis[x][y]=0;
    }
    if(arr[2][y]==arr[3][z]){
        vis[x][y]=1;
        dfs(x,y+1,z+1);
        vis[x][y]=0;
    }
}
int main()
{   int n;
    scanf("%d",&n);
    while(n--){
        scanf("%s %s %s",arr[1],arr[2],arr[3]);
        for(int i=1;i<=3;i++)
            len[i]=strlen(arr[i]);
        ok=0;
        memset(vis,0,sizeof(vis));
        if(arr[1][len[1]-1]==arr[3][len[3]-1]||arr[2][len[2]-1]==arr[3][len[3]-1])
            dfs(0,0,0);
        if(ok) printf("Data set %d: yes\n",p++);
        else printf("Data set %d: no\n",p++);
    }
    return 0;
}

 

HDU 1501:(DFS)

标签:

原文地址:http://www.cnblogs.com/luxiaoming/p/4705251.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!