请教各位高手,帮我写个排除法的小程序:题是这样的:有A\B\C\D\E五位小朋友。他们手中各有一张牌,而且都不同,他们都不说实话,用排除法将他们手中的牌猜出来。他们说话如下:A说:我的牌可能是1,可能是2;
B说:我的牌可能是2,可能是3;
C说:我的牌可能是1;
D说:我的牌可能是1,可能是4;
E说:我的牌可能是3,可能是4,可能是5;解题的思路是,C说他的牌可能是1,所以,他就是1,那么,A跟D的1就不可能是真的。所以得出A:2
B:2 或 3
C:1
D:4
E:3 或 4 或 5接着可以看到A只剩下一个2,那么就可以去除B的2,即B为3,而D只剩下一个4,那么就可以去除E的4,即E为3或5A:2
B:3
C:1
D:4
E:3 或 5接着,可以看到B只剩下一个3,那么E的3也可以去除,最终结果为:A 拿的牌是:2
B 拿的牌是:3
C 拿的牌是:1
D 拿的牌是:4
E 拿的牌是:5就是这样的一条题目了,我用了if(){}else if,写了N长,越写越乱,还是弄不出个结果来。
懂得设计这个的高手请帮帮我,我的电子邮箱地址是[email protected]
B说:我的牌可能是2,可能是3;
C说:我的牌可能是1;
D说:我的牌可能是1,可能是4;
E说:我的牌可能是3,可能是4,可能是5;解题的思路是,C说他的牌可能是1,所以,他就是1,那么,A跟D的1就不可能是真的。所以得出A:2
B:2 或 3
C:1
D:4
E:3 或 4 或 5接着可以看到A只剩下一个2,那么就可以去除B的2,即B为3,而D只剩下一个4,那么就可以去除E的4,即E为3或5A:2
B:3
C:1
D:4
E:3 或 5接着,可以看到B只剩下一个3,那么E的3也可以去除,最终结果为:A 拿的牌是:2
B 拿的牌是:3
C 拿的牌是:1
D 拿的牌是:4
E 拿的牌是:5就是这样的一条题目了,我用了if(){}else if,写了N长,越写越乱,还是弄不出个结果来。
懂得设计这个的高手请帮帮我,我的电子邮箱地址是[email protected]
解决方案 »
- vb后台操作左键单击效果!仅限本程序坐标!
- VB文件操作问题!!~~~
- 散分,先到先得
- 如何对cad中的样条曲线进行曲线拟合啊 样条函数的解法
- 怎么调用软键盘?
- {快速结贴} 请问如何判断检索出来的字段是否为空?
- 怎样制作安装程序?
- 请问,treenview中,怎样在子结点的checked=true时,父、祖父结点的checked同步为true?反之则不然!
- getrows中后的fields中取多记录时格式如何(如取第一列和第二列数据)
- 关于WndProc函数?谢谢!
- vb那种进度条能随便的左右走动表示系统正忙没有死机就行,不必要将时间计算的很精确,轻松好用就行。
- ramdomize中的种子是什么
C说:我的牌可能是1;结果
C 拿的牌是:1 c说了实话,但是你又说"他们都不说实话" 这本身是矛盾的阿
最后说一句,你说话好酸阿
A=[1,2];
B=[2,3];
C=[1];
D=[1,4];
E=[3,4,5];
[n(1),m(1)]=size(A); [n(2),m(2)]=size(B);
[n(3),m(3)]=size(C); [n(4),m(4)]=size(D); [n(5),m(5)]=size(E);
for i=1:m(1)
for j=1:m(2)
for t=1:m(3)
for p=1:m(4)
for q=1:m(5)
MM(1)=A(i);MM(2)=B(j);MM(3)=C(t);MM(4)=D(p);MM(5)=E(q);
for x=1:4
for y=x+1:5
if MM(x)~=MM(y)
break;
end
end
end
end
end
end
end
end
for x=1:4
for y=x+1:5
if MM(x)==MM(y)
disp('猜测无结果'); break;
end
end
end我是用matlab编的,个人意见,仅供参考!