五大基础算法——枚举

本文介绍了枚举算法的基本概念,包括定义、算法实现及两个具体实例:分数拆分和除法问题。通过枚举方法解决这些数学问题,强调了如何设计循环变量、初值、终值和递增值,以及如何确定检验条件。
摘要由CSDN通过智能技术生成

1、定义

按照问题的要求,一一列举所有有可能的解,然后进行判断,若符合要求则采纳这个解,不符合就抛弃。

2、算法实现

第一部分(循环部分):

利用循环把所有有可能的解,一一列举出来。需注意不能遗漏任何一个解,也要避免重复。

要考虑如何设计循环变量、初值、终值和递增值。循环变量是否参与检验。

为了提高解题效率,尽可能的缩小枚举范围。

第二部分(检验);

准确找出判断条件,对每一个解进行检验。

3、枚举算法实例

第一题:分数拆分(Fractions Again?!,UVa 10976)

输入一个正整数k,找到所有的正整数x>=y,使得1/k=1/x+1/y。

样例输入

2
12

样例输出

2
1/2 = 1/6 + 1/3
1/2 = 1/4 + 1/4
8
1/12 = 1/156 + 1/13
1/12 = 1/84 + 1/14
1/12 = 1/60 + 1/15
1/12 = 1/48 + 1/16
1/12 = 1/36 + 1/18
1/12 = 1/30 + 1/20
1/12 = 1/28 + 1/21
1/12 = 1/24 + 1/24

解题思路:由给出的式子,和x>=y,可知,k<y<=2k,通过一一枚举y

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值