poj1056

来源:互联网 发布:语言算法的复杂性 编辑:程序博客网 时间:2024/06/07 07:10

一次AC

1.需要注意文件结束符的判断

cin>>s,当遇到文件结束符时cin返回0


2.对于codeSet中的每个串,判断它是不是那些比它长的串的前缀子串即可。用substr函数返回前缀子串。

//Memory: 196KTime: 0MS//Language: C++Result: Accepted    #include<iostream>    #include<vector>    #include<string>    using namespace std;    int main()    {    unsigned setNum;    vector<string> codeSet;    string s;    bool flag;    int i,j;        setNum = 0;    while(1)    {    flag = false;    ++setNum;    while(1)    {    if(cin>>s == 0)//读入文件结束符时,cin返回0,程序结束    return 0;    if(s.compare("9")==0)    break;    codeSet.push_back(s);    }    for(i=0; i<codeSet.size(); ++i)    {    for(j=i+1; j<codeSet.size(); ++j)    {    if(codeSet[i].size()<codeSet[j].size())    {    string sub=codeSet[j].substr(0,codeSet[i].size());    if(codeSet[i].compare(sub)==0)    {    flag = true;    break;    }    }    }    if(flag)    break;    }    if(flag)    cout<<"Set "<<setNum<<" is not immediately decodable"<<endl;    else    cout<<"Set "<<setNum<<" is immediately decodable"<<endl;    codeSet.clear();    }    return 0;    }


原创粉丝点击