数据结构与算法之蛮力(穷举)算法

本文深入探讨了蛮力算法中的枚举法(穷举法),通过三个具体问题——数字三角形、接水问题和寻规律数字的求解,展示了如何运用穷举策略设计算法。遇到有限变量和值的场景,穷举法是一种实用的补充手段,但需注意其在复杂问题上的效率问题。

数据结构与算法之蛮力(穷举)算法

蛮力法是基于计算机运算速度快这一特性,在解决问题时采用的一种“惰性”的策略。这种策略不经过(或者说是经过很少的)思考,把问题的所有情况或所有过程交给计算机去一一尝试,从中找出问题的解。蛮力算法的应用很广。

枚举法(穷举法)是蛮力算法的一种,它对可能解的众多候选解按某种顺序逐一枚举和检验,并从中找出那些符合要求的候选解作为问题的解。

这种方法简单易行,尤其是对于一时想不出更好的解法的问题,不失为一种补救的好方法。但是,这种方法只能解决变量个数有限,而且每个变量可取值个数也很有限的情况,否则会造成“指数爆炸”,在计算机上难以实现。

用枚举法解决问题,通常可以从两个方面进行算法设计。
找出枚举范围:分析问题所涉及的各种情况。
找出约束条件:分析问题的解需要满足的条件,并用逻辑表达式表示。

寻规律问题

寻找规律数字:将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例,试求出所有满足条件的三个三位数。
例如:三个三位数192,384,576满足以上条件。

#include<iostream> 
using namespace std;
int main(){
   
   
	for(int j, i=123;i<327;i++)	{
   
   
		int a[10]={
   
   0};
		a[i/100]++;a[i%100/10]++;a[i%10]++;
		a[i*2/100]++;a[i*2%100/10]++;a[i*2%10]++;
		a[i*3/100]++;a[i*3%100/10]++;a[i*3%10]++<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值