IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 算法:(二)枚举(穷举)算法 -> 正文阅读

[数据结构与算法]算法:(二)枚举(穷举)算法

目录

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 枚举(穷举)算法

实例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;
}

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-11-10 12:39:06  更:2021-11-10 12:39:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:44:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码