uva 644 Immediate Decodability

来源:互联网 发布:微单 人像 知乎 编辑:程序博客网 时间:2024/06/05 10:16

字符串应用加集合应用,每一次比较的时候只需要判断一个字符串的字典序前面的所有的字符串是不是他的前缀就行了,判前缀的时候使用string类的s1.compare(0, s2.length(), s2)这样的函数就行了。

#include <stdio.h>#include <string>#include <string.h>#include <iostream>#include <set>#include <algorithm>using namespace std;set<string> s;int case_count;void func(){set<string>::iterator it_i, it_j;bool f = true;for(it_i=s.begin(); it_i!=s.end(); it_i++){for(it_j=s.begin(); it_j!=it_i; it_j++){if(it_i->length()>it_j->length() && 0==it_i->compare(0,it_j->length(),*it_j)){f = false;goto end;}}}end:if(f)printf("Set %d is immediately decodable\n", case_count);elseprintf("Set %d is not immediately decodable\n", case_count);}int main(void){char buffer[20];string str;s.clear();case_count = 0;while(gets(buffer) != NULL){if(!strcmp(buffer,"9")){case_count ++;func();s.clear();}else{str.assign(buffer);s.insert(str);}}return 0;}


原创粉丝点击