题目链接 :Reasoning test
思路 :
我们看题意,发现 语句 6 中有三个是相同的,因此我们从语句 6 开始假设!
先规定 num : X 表示 第 num 个数答案是 X
num1 :X -> num2 : X 表示从num1 可以推断 num2 的答案
————————————————————手动分界——————————————
6 :A
2 , 4 , 8 相同故 3 :B , 2 : B , 4 : B(因为2,4相同,必定不能排除2,4其中的一个 ,如果 3 :A 时与 6 :A 矛盾)
2 :B -> 5 : D -> 7 : D ;
4 : B -> 7 : B (与上式矛盾)
6 : B
因为 6 :B 所以 1 :B ,8 : B; ( 8 : B + 1 : B )-> 5 : D -> 2 : B ( 因为 2 和 6 相同,所以当 3 :D 时,出现矛盾;所以 3 :A)
3 : A -> 4 : B -> 7 : D ( 与 2 :B 矛盾)
6 : C
( 字迹潦草,还望不要介意。。。)
6 :D
因为 5 9 8 答案相同,由语句 9 得出 5 :D 9 :D 8 : D
5 : D -> 7 : D ( 因为此时就已经有了 5 个 D 所以 D 肯定不是最少的,与语句 7 矛盾)
综上所述 我们得到了一个合法的答案
1 2 3 4 5 6 7 8 9 10
B C A C A C D A B A
比赛时后没有做出来,主要是将第 9 句中的 两个条件只能成立一个误认为两个都要成立!!! ( 难受!!!)
分析到这里,代码就很简单了 T_T!
#include<iostream>
using namespace std;
int main()
{
cout<<"BCACACDABA"<<endl;
return 0;
}