題目鏈接: 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 51000
map<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;
}