hdoj1113

http://acm.hdu.edu.cn/showproblem.php?pid=1113
字符串题,不难,开始NOT A VALID WORD后没有打印*号,WA了大半天。。。。
思路:将字典里的每个单词按字典序重排。重排后的单词和原来的单词作为一个字典结构体元素的域。对于每个要查找的单词,先按字母的字典序对其重排,然后在字典(结构体数组)中查找,如果找到则输出。
注意:字典中单词间要按字符串字典序排序,因为对于每个要查询的单词,如果字典中存在多个符合条件的单词,那么要按字典序输出单词。

#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
#include<string>
#include<iostream>
using namespace std;
typedef struct Dic{
    string word;
    string ss;
}Dic;
Dic dic[200];
bool cmp(Dic a,Dic b)
{
    return a.word<b.word;
}
int main()
{
    string s[200];
    int i=1;
    cin>>s[i];
    while(s[i]!="XXXXXX")
    {
        dic[i].word=s[i];
        string str=s[i];
        sort(str.begin(),str.end());
        dic[i].ss=str;
        cin>>s[++i];
    }
    int n=i-1;
    sort(dic+1,dic+1+n,cmp);
    i=1;
    int j;
    cin>>s[i];
    while(s[i]!="XXXXXX")
    {
        bool flag=false;
        sort(s[i].begin(),s[i].end());
        for(j=1;j<=n;j++)
            if(dic[j].ss==s[i])
            {
                flag=true;
                cout<<dic[j].word<<endl;
            }
        if(!flag)
            cout<<"NOT A VALID WORD"<<endl;
        cout<<"******"<<endl;
        cin>>s[++i];
    
    }
return 0;
}

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>