hdu 1247 Hat’s Words (hash+map)

来源:互联网 发布:所有浏览器打不开淘宝 编辑:程序博客网 时间:2024/04/29 12:50

题目链接:   hdu 1247

题目大意:   给出单词词典,问词典中哪些单词可以由另外两个单词组成

解题思路:   用Hash或者map映射每个单词

                  枚举每个单词分开成两半时,前后部分是否有对应的Hash(或map)值

代码:

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <algorithm>#include <map>#include <string>using namespace std;#define MAX 51000map<string,int>Q;    //map<string,int>Q;char ch[MAX][100];int main(){    char ch1[100],ch2[100];    int n,i,j,j1,j2;    n=0;    while(scanf("%s",ch[n])!=EOF)    {        Q[ch[n]]=3;        n++;    }    for(i=0;i<n;i++)    {        for(j=0;ch[i][j]!='\0';j++)        {            ch1[j]=ch[i][j],ch1[j+1]='\0';            if(Q[ch1]==3)            {                for(j1=j+1,j2=0;ch[i][j1]!='\0';j2++,j1++)                {                    ch2[j2]=ch[i][j1];                    ch2[j2+1]='\0';                }                ch2[j2]='\0';                if(Q[ch2]==3)  //每个单词分开成两半时,前后部分是否有对应的Hash(或map)值                {                    printf("%s\n",ch[i]);                    break;    //***找到则退出                }            }        }    }    return 0;}