目录

枚举(穷举)算法

实例1.填数字游戏

解题方法

实例2.填运算法符

解题方法


枚举(穷举)算法

算法思路

枚举法的本质就是从所有候选答案中去搜索正确的解,使用该算法需要满足两个条件:

(1)可预先确定候选答案的效量:

(2)候选答案的范围在求解之前必须有一个确定的集合

实例1.填数字游戏

解题方法

#include <stdio.h>
int main()
{int i1, i2, i3, i4, i5;long multi, result;for (i1 = 1; i1 <= 9; i1++){for (i2 = 0; i2 <= 9; i2++){for (i3 = 0; i3 <= 9; i3++){for (i4 = 0; i4 <= 9; i4++){for (i5 = 1; i5 <= 9; i5++){multi = i1 * 10000 + i2 * 1000 + i3 * 100 + i4 * 10 + 15;result = i5 * 100000 + i5 * 10000 + i5 * 1000 + i5 * 100 + i5 * 10 + i5;if (multi * i1 == result){printf("\n%5d%2d%2d%2d%2d\n", i1, i2, i3, i4, i5);printf("X%12d\n", i1);printf("______________\n");printf("%3d%2d%2d%2d%2d%2d\n", i5, i5, i5, i5, i5, i5);}}}}}}getchar();return 0;
}

实例2.填运算法符

5   5   5  5  5=5

由于算术表达式的特殊性,在编程求解这个算式时,需要注意以下几点

1:当填入除号时,要求右侧的数不能为0;

2.乘除的运算级别比加减高;

5+5-5X5/5=5

解题方法

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{int j, i[5];//循环变量,数组i用来表示4个运算符int sign;//累加运算时的符号int result;//保存运算式的结果值int count = 0;//计数器,统计符合条件的方案int num[6];//保存操作数float left, right;//保存中间结果char oper[5] = { ' ','+','-','*','/'};//运算符printf("请输入5个数;");for (j = 1; j <= 5; j++){scanf("%d", &num[j]);}printf("请输入结果:");scanf("%d", &result);for (i[1] = 1; i[1] <= 4; i[1]++)//循环4种运算符,1.表示+,2.表示-,3.表示*,4.表示/{if ((i[1] < 4) || (num[2]) != 0)//运算符是/,则第二个运算数不能为0{for (i[2] = 1; i[2] <= 4; i[2]++){if ((i[2] < 4) || (num[3] != 0)){for (i[3] = 1; i[3] <= 4; i[3]++){if ((i[3] < 4) || num[4] != 0){for (i[4] = 1; i[4] <= 4; i[4]++){if ((i[4] < 4) || (num[5] != 0)){left = 0;right = num[1];sign = 1;for (j = 1; j <= 4; j++){switch (oper[i[j]]){case '+':left = left + sign * right;sign = 1;right = num[j + 1];break;case '-':left = left + sign * right;sign = -1;right = num[j + 1];break;//通过-1;实现减法case'*':right =right * num[j + 1];break;//实现乘法case'/':right = right / num[j + 1];break;}}if (left + sign*right == result){count++;printf("%3d: ", count);for (j = 1; j <= 4; j++){printf("%d%c", num[j], oper[i[j]]);}printf("%d=%d\n", num[5], result);}}}}}}}}}if (count == 0)printf("没有符合要求的方法");getchar();return 0;
}

算法:(二)枚举(穷举)算法相关推荐

  1. java 穷举法_C++基本算法思想之穷举法

    穷举算法(Exhaustive Attack method)是最简单的一种算法,其依赖于计算机的强大计算能力来穷尽每一种可能性,从而达到求解问题的目的.穷举算法效率不高,但是适应于一些没有规律可循的场 ...

  2. 农民过河算法可爱的学习----记录于高考报名后的怀旧emo时刻--穷举算法

    很多关卡在向孩子教学代码的同时,更是在潜移默化地训练孩子的编程思维. 在最开始的地牢地图中,孩子需要使用「While-True」循环语句,穿过一个又一个结构重复的迷宫. 在学习「While-True」 ...

  3. 百钱百鸡php穷举法,PHP经典题:百钱百鸡问题(穷举算法)

    PHP经典题:百钱百鸡问题(穷举算法) 百钱百鸡问题: 已知:公鸡5元一只,母鸡3元一只,小鸡一元3只 现用100元钱买了100只鸡,问:公鸡母鸡小鸡各几只? --请考虑尽可能高效的方法 思路: 如果 ...

  4. 穷举算法——奶牛碑文(cow)

    - 穷举算法--奶牛碑文(cow) 题目描述 小伟暑假期间到大草原漫游,在一块石头上发现了一些有趣的碑文.碑文似乎是一个神秘古老的语言,只包括三个大写字母 C.O 和W. 尽管小伟看不懂,但是令他高兴 ...

  5. 简析穷举算法,及其简单应用

    简析穷举算法,及其简单应用 穷举概述 穷举法又称列举法,其基本思想是逐一列举问题所涉及的所有情况. 穷举法常用于解决"是否存在"或"有多少种可能"等问题. 应用 ...

  6. 3388=24及24点游戏的穷举算法

    偶尔看到一题:用3 3 8 8 四个数和加减乘除组合得出24,前提是用完这四个数,几年没好好思考了,偶算了半天没答案,就写了个穷举算法,呵呵,貌似结果只有一种啊,各位兄台还有其它答案么? packag ...

  7. java穷举密码_穷举算法和递推算法(Java)

    穷举算法 概念: 最简单算法,依赖计算机的强大计算能力穷尽每一种可能的情况.穷举算法效率不高,但是适合一些没有明显规律可循的场合. 思想: 在使用穷举算法时,需要明确问题答案的范围,这样才可能在指定范 ...

  8. 穷举算法(鸡兔同笼问题)

    穷举算法的基本思想就是从所有可能的情况中搜索正确的答案,其执行步骤如下: (1)对于一种可能的情况,计算其结果. (2)判断结果是否满足要求,如果不满足则进行执行第(1)步来搜索下一个可能的情况:如果 ...

  9. c语言穷举算法 枚举法,c语言枚举法 穷举法 ppt课件

    枚举法 穷举法 笨人之法 把所有可能的情况一一测试 筛选出符合条件的各种结果进行输出 分析 这是个不定方程 三元一次方程组问题 三个变量 两个方程 x y z 1005x 3y z 3 100设公鸡为 ...

  10. c语言穷举算法 枚举法,c语言枚举法(穷举法).ppt

    c语言枚举法(穷举法) 枚举法(穷举法) "笨人之法": 把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出. 百元买百鸡问题分析 百元买百鸡问题分析 优化 继续优化 利用 ...

最新文章

  1. Linux下的Shell编程(2)环境变量和局部变量
  2. 第十六届智能车竞赛竞速组别网络报名说明
  3. 网关到底是什么?协议转换器是网关吗?
  4. uni-app 组件中的canvas转化为图片报错:errMsg:“canvasToTempFilePath:fail canvas is empty”
  5. 添加公共引用目录_3分钟解决200页Word生成目录的问题,无需插件,领导看了直夸奖...
  6. 搜狐被SEC列入“预摘牌名单”!回应:不打算提出异议
  7. 蓝桥杯 BASIC-7 基础练习 特殊的数字
  8. Linux 基本命令(一)--ls 常用命令
  9. 数据结构(三)树、二叉树、最优二叉树
  10. 18个免费视频素材网站,超高清、不限速、无版权、可商用,1秒解决你90%的视频剪辑难题!
  11. 《老友记》第一季第二集精读笔记
  12. 阿里官方 Redis 开发规范
  13. 大学生活_网络营销实验
  14. 【互联网那些事】到底什么是互联网思维
  15. TOP20W词库,双十一,直通车,用超级推荐获取手淘流量的方法——上篇
  16. n阶魔方的构成方法C语言,穷举法打印n阶魔方矩阵
  17. 高德地图精确定位和获取地理位置
  18. OKR工作法——宏观总结
  19. 学渣的刷题之旅 leetcode刷题 7.整数反转
  20. 浏览器打印功能---js

热门文章

  1. mysql篇:如何进入mysql
  2. @Primary 使用
  3. 一台计算机组装完成以后,要先装什么.,一台刚组装好的电脑,还需要进行哪些操作?...
  4. 攻防世界web新手fileclude
  5. [Linux] emacs简介
  6. 项目奖金要不要与合同额直接相关?
  7. 2的1000次方的各位之和是多少?
  8. Learning Hammerspoon中英文互译
  9. javaScript(ES5)中想方设法继承家产的方式详解
  10. 使用轻量应用服务器搭配宝塔面板搭建可道云kodbox私有云网盘的方法教程