Description
Input
Output
Sample Input
01 10 0010 0000 9 01 10 010 0000 9
Sample Output
Set 1 is immediately decodable Set 2 is not immediately decodable
题目大意:
给出多组字符串,判断每组字符串中有没有某个字符串是其它字符串的前缀,如果有输出“Set 数字 is not immediately decodable”,如果没有输出Set 数字 is immediately decodable(其中数字代表第几组),每组的输入以一个单一的字符‘9’结束。
解题思路:
暴力查找,比对。将一组的字符串按字典序排序,然后比对相邻的字符串是否一个是另一个的前缀。
本题还可用字典树解答。
代码如下:C++代码
#include <iostream>
#include <string>
#include<stdio.h>
#include <algorithm>
using namespace std;
string s[20];//储存字符串
int main()
{
int num=1,i,j,n;
while(cin>>s[0])
{
n=0;
while(s[n]!="9")
{
n++;
cin>>s[n];
}
sort(s,s+n);//按字典序排序字符串
//判断相邻字符串是否存在前缀
for(i=0;i<n-1;i++)
{
for(j=0;j<s[i].size();j++)
{
if(s[i][j]!=s[i+1][j])
break;
}
if(j==s[i].size())
break;
}
if(i<n-1)
printf("Set %d is not immediately decodable\n",num++);
else
printf("Set %d is immediately decodable\n",num++);
}
return 0;
}
E - IMMEDIATE DECODABILITY,布布扣,bubuko.com
原文地址:http://blog.csdn.net/yanghuaqings/article/details/38435365