算法学习之穷举--泊松分酒详细代码加注释

本文介绍了穷举法这一经典算法,详细阐述了其思想和执行流程,并通过泊松分酒问题提供了Java实现代码,适合初学者理解穷举法的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.穷举思想简述
  穷举法可谓是计算机程序设计中最经典也最为简单的一种算法,其依赖于计算机强大的计算能力来穷尽每一种可能存在的情况,从而达到问题的求解。另外,该法也被称之为暴力求解法;实际上如果你愿意的话,几乎大多数问题都可以转换为穷举求解的过程,但因为穷举算法的效率不高,所以它一般被用于一些没有明显规律可循的场合。
  
2.算法的执行流程
  在使用穷举法时,首先是明确问题答案的范围,以便在指定范围内搜索答案。指定范围以后,则可通过循环和条件判断的方式逐个验证每个答案,从而得出符合条件限定的正确答案。

原文:https://blog.youkuaiyun.com/a574780196/article/details/84038237 
 

本人小白希望哪里做的不好不对希望大佬们谅解

 

package sharewine;
/*
    泊松分酒  穷举学习 大致理解思想就是不停的按照指定的规则去倒酒 直到导出后停止
    初始酒量: 12 0 0
    12L
    8L
    5L

    6L
    制定一些计划
    1->2->3->1
    1等2为空的时候再倒酒,2必须把3倒满 ,3满后才向1中到
 */
public class ShareWine {
    private int b1=12;
    private int b2=8;
    private int b3=5;
    private int m=10;//目标酒量
    private void backBottle(int bb1,int bb2,int bb3){
        System.out.println("bb1:"+bb1+"---
问题是概率论中的一个经典问题,它描述的是在n杯大小相同的中随机配k杯给m个人,每个人得到一杯的概率布情况。这个问题可以用Python或C++来模拟,下面是一个简单的C++代码示例: ```cpp #include <iostream> #include <random> #include <vector> // 模拟布函数 int poisson_distribution(int k, double lambda, int n) { std::poisson_distribution<> dist(lambda); return dist(k) * (n choose k); // 使用组合数计算概率 } // 计算组合数 C(n, k) int combinations(int n, int k) { if (k == 0 || k == n) return 1; int numerator = 1, denominator = 1; for (int i = n; i > n - k; --i) { numerator *= i; denominator *= k; } return numerator / denominator; } int main() { int n = 10; // 杯总数 double lambda = 3.5; // 平均每杯被选中的概率(参数) int m = 5; // 人数 for (int k = 0; k <= m; ++k) { int probability = poisson_distribution(k, lambda, n); std::cout << "Probability of getting exactly " << k << " cups when distributing among " << m << " people: " << probability << std::endl; } return 0; } ``` 在这个代码中,我们使用了C++的`<random>`库来生成布的结果,`<cmath>`库中的组合数计算方法。`poisson_distribution`函数模拟了随机配k杯的概率,`combinations`函数计算了组合数。 如果你对这个代码有疑问或者想深入了解如何在C++中实现布,可以问: 1. 布在实际问题中有哪些应用? 2. 如何优化组合数计算,特别是当n和k都很大时? 3. 当m大于n时,问题会有怎样的特点?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值