枚举算法:
    又称为穷举法,在解决问题时,可能无法按照一定的规律从众多的答案中找出正确
 答案,此时,可以从众多的候选解中逐一取出候选答案,并验证选取的答案是否为
 正确答案。
 缺点:运算量大,解题效率低。
 优点:思路简单,程序编写调试方便。

 

例子:

逻辑推理题,问谁在说慌?
    张三说李四在说谎,李四说王五在说谎,王五说张三,李四都在说谎。
此类逻辑推理题无法用正常推理方法得出答案,但可以假设一个条件成立,在反推回题
设,如果与题设不矛盾,这是正确答案,反之不对。

# include <stdio.h>

int main(void)
{
int a, b, c; // 用来指代张三,李四,王五三个人,1代表说谎,0表示没有说谎

for (a = 0; a <= 1; ++a)
for (b = 0; b <= 1; ++b)
for (c = 0; c <= 1; ++c)
{
if (0 == a) // 假如张三没有说谎
if (1 == b) // 李四在说谎
if (0 == c) // 王五没有说谎
if (a == 1 && b == 1)
printf("%-3d %-3d %-3d\n", a, b, c);

if (0 == b) // 假如李四没有说谎
if (1 == a) // 张三在说谎
if (1 == c) // 王五在说谎
if (a != 1 || b != 1)
printf("%-3d %-3d %-3d\n", a, b, c);

if (0 == c) // 假如王五没有说谎
if (1 == a && 1 == b) // 张三和李四都在说谎
if (b == 0 && c == 0)
printf("%-3d %-3d %-3d\n", a, b, c);
}

return 0;
}

 

转载请注明出处