644 Immediate Decodability
字符串考细心唉,写好就花了很久,然后就是各种下标问题,调试了很久之后,终于得到了正确数据.
不过交上去如同平常的WA了,看看了那个论坛,不知怎么的想到会不会是自己数组没初始化,在比较某些未知的时候,无法预知,所以memset下,报着一丝希望,交上去居然AC了.
字符串题还有一道了,我确实做得很烂,以后需多加练习.我想法是等着以后有机会的话,通过重学语法来弥补.
//每组数据最多8个编码,每个最长8位.数据量不大.初步思路边读边匹配.
//比如读入第三个,就分别和第一个,第二个匹配.不匹配的时候,判断pos是否等于其中一个的长度.
#include<stdio.h>
#include<string.h>
#define MIN(x,y) x <= y ? x : y
int main()
{
#ifdef LOCAL
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
int i = 0, j, k, n = 1;
int len, ok = 0;
char code[10][10];
for(j = 0; j < 10; j++) memset(code[j], '\0', 10);
while(scanf("%s", code[i]) != EOF)
{
if(code[i][0] == '9') //输出
{
printf("Set %d is ", n++);
if(ok) printf("not immediately decodable\n");
else printf("immediately decodable\n");
i = -1; ok = 0;
}
else if(i && !ok)//从第二个开始
{
for(j = 0; j < i; j++)
{
len = MIN(strlen(code[j]), strlen(code[i]));
for(k = 0; k <= len; k++)
if(code[j][k] != code[i][k])
{
if(k == len) { ok = 1; j = i; } //结束j层循环
break;
}
}
}
i++;
}
return 0;
}
浙公网安备 33010602011771号