刷道小水题,用string做的,就是比较一个串是否是别的串的前缀
//============================================================================
// Name : 644.cpp
// Author :
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include <string>
#include <algorithm>
#include <cstdio>
using namespace std;
string t, s[1000], temp;
int T, n, tag;
bool cmp(string a, string b){
return a.length() <= b.length();
}
int main() {
freopen("a.txt", "r", stdin);
T = 0;
while(cin >> t&&t!="9"){
T++;
n = 0;
s[n++] = t;
while(cin >> t&&t!="9"){
s[n++] = t;
}
sort(s, s+n, cmp);
tag = 1;
for(int i = 0;i < n;i++){
for(int j = i+1;j < n;j++){
temp = s[j].substr(0,s[i].length());
if(temp == s[i]){
tag = 0;
goto END;
}
}
}
END: if(tag == 1) cout << "Set " << T <<" is immediately decodable" <<endl;
else cout << "Set " << T <<" is not immediately decodable" <<endl;
}
return 0;
}
本文介绍了一个简单的C++程序,用于判断一系列字符串中是否存在一个字符串作为另一个字符串的前缀的情况。通过对输入的字符串进行排序并两两比较,可以高效地解决这一问题。
65万+

被折叠的 条评论
为什么被折叠?



