• 数据结构——枚举算法笔记


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

    例子:

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

    # 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
    ", a, b, c);
                    
                    if (0 == b)  // 假如李四没有说谎
                        if (1 == a)  // 张三在说谎 
                            if (1 == c)  // 王五在说谎 
                                if (a != 1 || b != 1)
                                    printf("%-3d %-3d %-3d
    ", a, b, c);
                                    
                    if (0 == c)  // 假如王五没有说谎
                        if (1 == a && 1 == b)  // 张三和李四都在说谎
                            if (b == 0 && c == 0)
                                printf("%-3d %-3d %-3d
    ", a, b, c);
                 } 
        
        return 0; 
    } 
  • 相关阅读:
    删除字符串中的所有相邻的重复项
    前序 中序 后序
    用栈构建数组
    字符串
    链表相交 走完自己的路去走他人的路 总会相交
    环形链表
    selenium的简单登录操作
    【Spring 从0开始】IOC容器的Bean管理
    Ubuntu系统的常用命令:ssh保活、用户管理、开机自启、后台运行
    远程访问安装xfce4的内网服务器
  • 原文地址:https://www.cnblogs.com/lnlin/p/6901215.html
Copyright © 2020-2023  润新知