每年这图都会换个年份重新出现。
用cpp写的,暴力枚举,没有丝毫优化,就是枚举+检验。
数组a保存枚举的一个结果,取下标1~10,0号位设为-1来避免干扰。
答案是
B C A C A C D A B A
判断的函数c表示criteria,即判据,后跟数字表示第几题的题目要求。
函数中出现的b[]数组用于存储题目中的信息,是辅助数组
稍微用了点竞赛的技巧,枚举数时,由于均为A/B/C/D,将其视为0/1/2/3后,可看作是一个四进制数的数位。将整体转化为十进制数后,是连续的。
也就是说,可以从4^10-1向下枚举至0(十进制),将每个数转换为四进制,每个数位即为一个选项,整体作为一个枚举。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define A 0
#define B 1
#define C 2
#define D 3
int a[11]={
-1};
bool c2()
{
int b[]={
C,D,A,B};
return a[5]==b[a[2]];
}
bool c3()
{
int b[]={
3,6,2,4};
int cnt=0;
for(int i=0;i<4;++i)//a[3]为题目的答案,b[a[i]]映射为选支指向的题目
if(i==a[3]) continue;//不检查自己本身
else
cnt+=(a[b[i]]!=a[b[a[3]]]);
return cnt==3;
}
bool c4()
{
int b[][2]={
{
1,5},
{
2,7},
{
1,9},
{
6,10},
};
return a[(b