zoukankan      html  css  js  c++  java
  • HDU 1501:(DFS)

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

    #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
    ",p++);
            else printf("Data set %d: no
    ",p++);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    Java String 乱码
    HBase非原理性浅析
    git cherry-pick
    数据结构之队列
    数据结构之栈
    算法之简单排序
    数据结构之数组
    数据结构简介
    Java类型信息
    基数排序
  • 原文地址:https://www.cnblogs.com/luxiaoming/p/4705251.html
Copyright © 2011-2022 走看看