1056 IMMEDIATE DECODABILITY

本文介绍了一个用于检查字符串集是否具备即时可解码性的算法。该算法通过两两比较字符串,判断任一字符串是否为另一字符串的前缀来实现。适用于在线评测平台POJ的1056号问题“IMMEDIATE DECODABILITY”。代码使用C++编写,并包含完整的实现细节。

水题,两两验证一个串是否为另一个的前缀,要注意读入结束的处理

  1. //4471444_AC_0MS_408K
  2. /**********************************************************************
  3. *       Online Judge   : POJ
  4. *       Problem Title  : IMMEDIATE DECODABILITY
  5. *       ID             : 1056
  6. *       Date           : 12/9/2008
  7. *       Time           : 22:35:4
  8. *       Computer Name  : EVERLASTING-PC
  9. ***********************************************************************/
  10. #include<iostream>
  11. #include<string>
  12. using namespace std;
  13. #define MAXN 100
  14. string s[MAXN];
  15. int n,ca;
  16. bool Check()
  17. {
  18.     for (int i=0;i<n;++i)
  19.     {
  20.         for (int j=0;j<n;++j)
  21.         {
  22.             if (i!=j&&s[i].find(s[j])==0)
  23.             {
  24.                 return false;
  25.             }
  26.         }
  27.     }
  28.     return true;
  29. }
  30. int main()
  31. {
  32.     //freopen("in_1056.txt","r",stdin);
  33.     ca=0;
  34.     while (1)
  35.     {
  36.         n=0;
  37.         do 
  38.         {
  39.             cin>>s[n++];
  40.             if (cin.eof())
  41.             {
  42.                 goto ret;
  43.             }
  44.         } while (s[n-1]!="9");
  45.         n--;
  46.         printf("Set %d is %simmediately decodable/n",++ca,Check()?"":"not ");
  47.     }
  48. ret:return 0;
  49. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值