源代码: #include <stdio.h> int main() { printf("CBABBACCCC\n"); return 0; alt 这道题目我没有使用DFS算法来写(因为刚刚接触,不会)所以我是使用了另外一种电脑判断+人脑判断的方法来完成。首先就是对这道题目进行一个分析,每一个选择题都看一遍,可以发现有一些是独立题(与其他题目的答案无关)有写题目是有关联的(根据其他题目的答案推出这道题的答案的关联题),那么我们可以先通过判断得出独立题的答案,在对关联题的结果进行一个枚举,最后判断是是否符合。 从图中可以基本判断独立题是:8、9、10三个题目,剩下的就是关联题目。其中第9和第10题是可以直接得出答案的(因为网上都有)但是第8题的答案没法知道,所以这里归根到关联题。所以我们就建立一个数组a[11](多建一个是因为下标直接对应题目序号)a[9]和a[10]都赋值为3(1代表A、2代表B、3代表C)

现在我们已经有了思路,那么就可以写程序了,简单粗暴枚举之后,就到了比较难的判断环节,这个地方也是建议把好写的作为筛选的条件例如第一题、第二题等等,相对较复杂的第七题就可以人脑判断。代码如下:

#include <stdlib.h>
int main()
{
	int a[11],pd,i1,i2,i3,i,zhishu;
	a[9]=a[10]=3;
	{
		for(a[1]=1;a[1]<=3;a[1]++)
			for(a[2]=1;a[2]<=3;a[2]++)
				for(a[3]=1;a[3]<=3;a[3]++)
					for(a[4]=1;a[4]<=3;a[4]++)
						for(a[5]=1;a[5]<=3;a[5]++)
							for(a[6]=1;a[6]<=3;a[6]++)
								for(a[7]=1;a[7]<=3;a[7]++)
									for(a[8]=1;a[8]<=3;a[8]++)
									{
										
										i1=0;i2=0;i3=2;pd=0;zhishu=0;//pd用来判断是否符合条件
										for(i=1;i<=8;i++)
											{
												if (a[i]==1) i1++;//(统计每个选项出现次数)
												if (a[i]==2) i2++;
												if (a[i]==3) i3++;
											}
										
										if((i1==2)||(i1==3)||(i1==5)||(i1==7))zhishu++;//统计选项出现次数为素数的个数
										if((i2==2)||(i2==3)||(i2==5)||(i2==7))zhishu++;
										if((i3==2)||(i3==3)||(i3==5)||(i3==7))zhishu++;
										if(a[1]!=zhishu)pd++;
										if((a[2]+1)!=i2)pd++;
										if(((i1-i3)!=(4-a[3]))&&((i3-i1)!=(4-a[3])))pd++;
										if((a[5]==1)&&(a[2]!=a[3]))pd++;
										if((a[5]==2)&&(a[4]!=a[5]))pd++;
										if((a[5]==3)&&(a[6]!=a[7]))pd++;
										if((a[6]==1)&&(i1!=2))pd++;
										if((a[6]==2)&&(i2!=3))pd++;
										if((a[6]==3)&&(i1!=4))pd++;
										if (pd==0)
										{
										printf("***\n");
										printf("%c",a[1]+64);
										printf("%c",a[2]+64);
										printf("%c",a[3]+64);
										printf("%c",a[4]+64);
										printf("%c   ",a[5]+64);//五个五个隔开好判断
										printf("%c",a[6]+64);
										printf("%c",a[7]+64);
										printf("%c",a[8]+64);
										printf("%c",a[9]+64);
										printf("%c",a[10]+64);
										printf("   %d   %d   %d \n",i1,i2,i3);
										printf("***\n");//分隔开每一组
										}
									}
	}
}*/

随后结果如图: alt

此时我们只需要简单看一下即可得到答案就是: CBABBACCCC