从今日开始我会不定时发一些题解,给大家借鉴。 第一天: 题目:简写单词 最近情报人员得到了一些经过加密的文章,每个单词都很长。破译人员想到先把单词化简一下,方法是把每个单词尽量取短些的前缀,但所取的前缀不能是其它单词的前缀。 这个任务现在就交给你来完成。 解释:“字符串s1是s2的前缀”是说把字符串s2的后面去掉某些,只保留与s1相同长度时,s2就与s1完全相同。如:"abc"是"abcaade"和"abc"的前缀,但不是"ababc"的前缀。
来自:NOIP冲刺2010试题三。
思路: 用字符串连接,之后枚举判断。
#include<bits/stdc++.h>
using namespace std;
string s[100];
int n,f;
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>s[i];
for(int i=1;i<=n;i++){
for(int j=1;j<=s[i].size();j++){
string a;
f=0;
for(int jf=0;jf<j;jf++){
a+=s[i][jf];
}
for(int ir=1;ir<=n;ir++) {
f=0;
if(i!=ir){
string h;
for(int jtk=0;jtk<j;jtk++){
h+=s[ir][jtk];
}
if(h==a){
f=1;
break;
}
}
}
if(f==0){
cout<<a<<endl;
break;
}
}
}
return 0;
}
作者:Liuhaohong