1056 IMMEDIATE DECODABILITY
1056 -- IMMEDIATE DECODABILITY
解くだけなら符号化とかどうでもよいですね。いくつかの文字列が与えられて、ある文字列Aがある文字列Bの接頭語になっているAとB(A!=B)があるかどうかを調べなさい、というもの。入力セットの終わりが"9"だったりと気の利いていない問題。
GCCで205byte。
(追記)インチキで173byte。
i,j,k,l; char s[9][99]; main(n){ for(;n;n?printf("Set %d is%s immediately decodable\n",++l,k>n?" not":""):0){ for(n=0;~scanf("%s",s+n)&&*s[n]<50;n++); for(i=k=0;i<n;i++)for(j=0;j<n;)k+=strstr(s+i,s+j++)==s+i; } }
文字列の数は9で大丈夫な様子。これもまた9なのか。
i,k,l; char s[][99]; main(n){ for(;n;n?printf("Set %d is%s immediately decodable\n",++l,k?" not":""):0) for(n=k=0;gets(s+n)&*s[n]-57;n++) for(i=0;i<n;) k+=strstr(s+n,s+i++)==s+n; }
インチキがいけないことは自分でもよく分かっているのだが、むしゃくしゃしてやってしまったorz