#include<iostream>
#include<cmath>
#include<vector>
using namespace std;
int an[10] = { 0 };
bool isnb(int a, int b)
{
return (a - b == -1) || (a - b == 1);
}
void print()
{
for (int i = 0; i != 10; i++)
{
cout << char('A' + an[i]) << ' ';
}
cout << endl;
}
int main()
{
int all = pow(4, 10);
for (int i = 0; i != all; i++)
{
int temp = i;
int num[4] = { 0 };
for (int j = 0; j != 10; j++)
{
an[j] = temp % 4;
num[an[j]]++;
temp = temp / 4;
}
//2
switch (an[1])
{
case 0:
if (an[4] != 2)
continue;
break;
case 1:
if (an[4] != 3)
continue;
break;
case 2:
if (an[4] != 0)
continue;
break;
case 3:
if (an[4] != 1)
continue;
break;
}
//3
switch (an[2])
{
case 0:
if (!(an[2] != an[5] && an[2] != an[1] && an[2] != an[3]))
continue;
break;
case 1:
if (!(an[2] != an[5] && an[5] != an[1] && an[5] != an[3]))
continue;
break;
case 2:
if (!(an[1] != an[5] && an[2] != an[1] && an[1] != an[3]))
continue;
break;
case 3:
if (!(an[3] != an[5] && an[3] != an[1] && an[2] != an[3]))
continue;
break;
}
//4
switch (an[3])
{
case 0:
if (an[0] != an[4])
continue;
break;
case 1:
if (an[1]!=an[6])
continue;
break;
case 2:
if (an[0]!=an[8])
continue;
break;
case 3:
if (an[5]!=an[9])
continue;
break;
}
//5
switch (an[4])
{
case 0:
if (an[4]!=an[7])
continue;
break;
case 1:
if (an[4]!=an[3])
continue;
break;
case 2:
if (an[4]!=an[8])
continue;
break;
case 3:
if (an[4]!=an[6])
continue;
break;
}
//6
switch (an[5])
{
case 0:
if (!(an[7] == an[1] && an[7] == an[3]))
continue;
break;
case 1:
if (!(an[7] == an[0] && an[7] == an[5]))
continue;
break;
case 2:
if (!(an[7] == an[2] && an[7] == an[9]))
continue;
break;
case 3:
if (!(an[7] == an[4] && an[7] == an[8]))
continue;
break;
}
//9
switch (an[8])
{
case 0:
if (!((an[5] == an[0]) ^ (an[4] == an[5])))
continue;
break;
case 1:
if (!((an[5] == an[0]) ^ (an[4] == an[9])))
continue;
break;
case 2:
if (!((an[5] == an[0]) ^ (an[4] == an[1])))
continue;
break;
case 3:
if (!((an[5] == an[0]) ^ (an[4] == an[8])))
continue;
break;
}
//7,10
int max=0, min=0;
vector<int> ma;
vector<int> mi;
for (int j = 0; j != 4; j++)
{
if (num[j] < num[min])
min = j;
else if (num[j] > num[max])
max = j;
}
switch (an[6])
{
case 0:
if (min != 2)
continue;
break;
case 1:
if (min != 1)
continue;
break;
case 2:
if (min != 0)
continue;
break;
case 3:
if (min != 3)
continue;
break;
}
switch (an[9])
{
case 0:
if (num[max] - num[min] != 3)
continue;
break;
case 1:
if (num[max] - num[min] != 2)
continue;
break;
case 2:
if (num[max] - num[min] != 4)
continue;
break;
case 3:
if (num[max] - num[min] != 1)
continue;
break;
}
//8
switch (an[7])
{
case 0:
if (!((isnb(an[0], an[6])) &&
!isnb(an[0], an[4]) &&
!isnb(an[0], an[1]) &&
!isnb(an[0], an[9])))
break;
case 1:
if (!(!(isnb(an[0], an[6])) &&
isnb(an[0], an[4]) &&
!isnb(an[0], an[1]) &&
!isnb(an[0], an[9])))
break;
case 2:
if (!(!(isnb(an[0], an[6])) &&
!isnb(an[0], an[4]) &&
isnb(an[0], an[1]) &&
!isnb(an[0], an[9])))
break;
case 3:
if (!(!(isnb(an[0], an[6])) &&
!isnb(an[0], an[4]) &&
!isnb(an[0], an[1]) &&
isnb(an[0], an[9])))
break;
}
print();
break;
}
return 0;
}
输出 B C A C A C D A B A
刑侦推理暴力解法c++版
最新推荐文章于 2024-07-19 12:38:58 发布