在群里看到一套推理题,比较适合写代码解决
题目和答案如下:

推理题.jpg
先发执行的结果,答案只有一个:
Count is 4231
Answer is 2313134121
1 2 3 4分别代表A B C D,即B C A C A C D A B A与图中答案一致
代码如下:
package myTest1;
public class MyTest1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//定义10个变量
int a1,a2,a3,a4,a5,a6,a7,a8,a9,a10;
int countA,countB,countC,countD;
int countmax,countmin;
for(a1 = 1; a1 <5; a1++) //1
for(a2 = 1; a2 <5; a2++) //2
for(a3 = 1; a3 <5; a3++) //3
for(a4 = 1; a4 <5; a4++) //4
for(a5 = 1; a5 <5; a5++) //5
for(a6 = 1; a6 <5; a6++) //6
for(a7 = 1; a7 <5; a7++) //7
for(a8 = 1; a8 <5; a8++) //8
for(a9 = 1; a9 <5; a9++) //9
for(a10 = 1; a10 <5; a10++){ //10
//Prepare
countA = 0;
countB = 0;
countC = 0;
countD = 0;
countmax = 0;
countmin = 0;
switch(a1){
case 1: countA++;break;
case 2: countB++;break;
case 3: countC++;break;
case 4: countD++;
}
switch(a2){
case 1: countA++;break;
case 2: countB++;break;
case 3: countC++;break;
case 4: countD++;
}
switch(a3){
case 1: countA++;break;
case 2: countB++;break;
case 3: countC++;break;
case 4: countD++;
}
switch(a4){
case 1: countA++;break;
case 2: countB++;break;
case 3: countC++;break;
case 4: countD++;
}
switch(a5){
case 1: countA++;break;
case 2: countB++;break;
case 3: countC++;break;
case 4: countD++;
}
switch(a6){
case 1: countA++;break;
case 2: countB++;break;
case 3: countC++;break;
case 4: countD++;
}
switch(a7){
case 1: countA++;break;
case 2: countB++;break;
case 3: countC++;break;
case 4: countD++;
}
switch(a8){
case 1: countA++;break;
case 2: countB++;break;
case 3: countC++;break;
case 4: countD++;
}
switch(a9){
case 1: countA++;break;
case 2: countB++;break;
case 3: countC++;break;
case 4: countD++;
}
switch(a10){
case 1: countA++;break;
case 2: countB++;break;
case 3: countC++;break;
case 4: countD++;
}
countmax = countA;
countmin = countA;
if(countmax < countB) countmax = countB;
if(countmin > countB) countmin = countB;
if(countmax < countC) countmax = countC;
if(countmin > countC) countmin = countC;
if(countmax < countD) countmax = countD;
if(countmin > countD) countmin = countD;
//Test one
//Test two
if(a2 == 1 && a5 == 3 || a2 == 2 && a5 == 4 || a2 == 3 && a5 == 1 || a2 == 4 && a5 == 2) {
;
}
else continue;
//Test three
if(a3 == 1 && a3 != a6 && a3 != a2 && a3!= a4 || a3 == 2 && a6 != a3 && a6 != a2 && a6 != a4 || a3 == 3 && a2 != a3 && a2!= a6 && a2!= a4) {
;
}
else continue;
//Test four
if(a4 == 1 && a1 == a5 || a4 == 2 && a2 == a7 || a4 == 3 && a1 == a9 || a4 == 4 && a6 == a10) {
;
}
else continue;
//Test five
if(a5 == 1 && a8 == 1 || a5 == 2 && a4 == 2 || a5 == 3 && a9 == 3 || a5 == 4 && a7 == 4) {
;
}
else continue;
//Test six
if(a6 == 1 && a8 == a2 && a8 == a4 || a6 == 2 && a8 == a1 && a8 == a6 || a6 == 3 && a8 == a3 && a8 == a10 || a6 == 4 && a8 == a5 && a8 == a9) {
;
}
else continue;
//Test seven
if(a7 == 1 && countC != 0 && countC < countA && countC < countB && countC < countD || a7 == 2 && countB != 0 && countB < countA && countB < countC && countB < countD || a7 == 3 && countA != 0 && countA < countB && countA < countC && countA < countD || a7 == 4 && countD != 0 && countD < countA && countD < countB && countD < countC) {
;
}
else continue;
//Test eight
if(a8 == 1 && (a7 + 1) != a1 && (a7 - 1) != a1 || a8 == 2 && (a5 + 1) != a1 && (a5 - 1) != a1 || a8 == 3 && (a2 + 1) != a1 && (a2 -1) != a1 || a8 == 4 && (a10 +1) != a1 && (a10 -1) != a1) {
;
}
else continue;
//Test nine
if(a1 == a6) {
if(a9 == 1 && a6 != a5 || a9 == 2 && a10 != a5 || a9 == 3 && a2 != a5 || a9 == 4 && a9 != a5) {
;
}
else continue;
}
else {
if(a9 == 1 && a6 == a5 || a9 == 2 && a10 == a5 || a9 == 3 && a2 == a5 || a9 == 4 && a9 == a5) {
;
}
else continue;
}
//Test ten
if(a10 == 1 && (countmax - countmin) == 3 || a10 == 2 && (countmax - countmin) == 2 || a10 == 3 && (countmax - countmin) == 4 || a10 == 4 && (countmax - countmin) == 1) {
;
}
else continue;
System.out.println("Count is " + countA+countB+countC+countD);
System.out.println("Answer is " + a1+a2+a3+a4+a5+a6+a7+a8+a9+a10);
}
}
}