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