个人认为抓取4个就一定有两个同一颜色的果冻。
但总感觉答案没这么简单,还望指点。
----------------解决方案--------------------------------------------------------
呵呵,
wangfengLLD都回答对了,不错,不错.其实抓果冻就是4个.我和很多朋友讨论过的.其他没有合理的说明.
水漪儿MM说的回答的也不错
不过MM15楼的答案好象说的不太合理,其实只要问其中一个人,你的国家在那里.答案都是诚实国了.相反的就是了.
----------------解决方案--------------------------------------------------------
好明显用减治法是行不通的啦~看过一本书介绍过,比较长~
----------------解决方案--------------------------------------------------------
以下是引用toms在2007-11-21 14:31:26的发言:
呵呵,
不过MM15楼的答案好象说的不太合理,其实只要问其中一个人,你的国家在那里.答案都是诚实国了.相反的就是了.
呵呵,
不过MM15楼的答案好象说的不太合理,其实只要问其中一个人,你的国家在那里.答案都是诚实国了.相反的就是了.
嗯,对,这样就可以了,想复杂了,呵呵
[此贴子已经被作者于2007-11-21 18:36:17编辑过]
----------------解决方案--------------------------------------------------------
我的AC了
#include<stdio.h>#include<string.h>
char right[3][7],left[3][7],result[3][5];
int light(char c){
int i;
for(i=0;i<3;i++)
switch(result[i][0]){
case'u':if(strchr(left[i],c)==NULL)return 0;break;
case'd':if(strchr(right[i],c)==NULL)return 0;break;
case'e':if(strchr(left[i],c)!=NULL||strchr(right[i],c)!=NULL)return 0;break;
}
return 1;
}
int heavy(char c){
int i;
for(i=0;i<3;i++)
switch(result[i][0]){
case'u':if(strchr(right[i],c)==NULL)return 0;break;
case'd':if(strchr(left[i],c)==NULL)return 0;break;
case'e':if(strchr(left[i],c)!=NULL||strchr(right[i],c)!=NULL)return 0;break;
}
return 1;
}
int main(){
int n,i,j;
char c;
scanf("%d",&n);
for(i=0;i<n;i++){
for(j=0;j<3;j++)
scanf("%s%s%s",right[j],left[j],result[j]);
for(c='A';c<='L';c++){
if(light(c)){
printf("%c is the counterfeit coin and it is light.\n",c);
break;
}
if(heavy(c)){
printf("%c is the counterfeit coin and it is heavy.\n",c);
break;
}
}
}
return 0;
}
----------------解决方案--------------------------------------------------------