标签:
题目意思是:给你一些字符串,将其进行比较,如果有一个字符串是另一个字符串的前缀,就认为是not immediately。如果没有一个字符串是另一个的前缀,就认为是 immediately。
所以可以先将输入的字符串按照长度从小到大sort一遍,然后都比较一次就可以了。不知道为什么自己写的比较函数交不上去= =,然后用了库里面的strncmp函数。
strncmp函数是指定比较s1和s2中的前maxlen个字符,如果相同则返回0。实际上意思就是看是不是他的前缀= =
int strncmp(char *str1, char *str2, int maxlen);
#include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> using namespace std; struct node{ char str[200]; int length; }p[10000]; bool cmp(node a,node b) { return a.length<b.length; } /*int prestr_compare(char a[],char b[],int len) { int i=0,j=0; char s[100]; for(i=0;i<len;i++) s[i]=b[i]; // printf("%s %s\n",a,s); if(strcmp(a,s)==0)return 1; return 0; }*/ int main() { int i=0,j,k,l,t,f=0,cases=0; while(scanf("%s",p[i].str)!=EOF) { p[i].length=strlen(p[i].str); if(p[i].str[0]=='9') { cases++; t=i; sort(p,p+t,cmp); for(i=0;i<t;i++) { l=strlen(p[i].str); for(j=i+1;j<t;j++) { if(strncmp(p[i].str,p[j].str,l)==0)f=1; if(f)break; } if(f)break; } if(f)printf("Set %d is not immediately decodable\n",cases); else printf("Set %d is immediately decodable\n",cases); i=0; f=0; } else i++; } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
UVA 644 Immediate Decodability
标签:
原文地址:http://blog.csdn.net/aaaaacmer/article/details/46851279