news 2026/7/24 21:16:25

Shopee 算法一面手撕

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Shopee 算法一面手撕

投色子,n次,输出float数组,代表每种和的概率,C++

#include <iostream>

#include <vector>

#include <cmath> // 用于计算pow

#include <iomanip> // 用于格式化输出

using namespace std;

// 计算n次投骰子后,各点数和的概率,返回float数组

vector<float> calculateDiceProbability(int n) {

// 边界条件:n必须大于0

if (n <= 0) {

return {};

}

// 动态规划数组:dp[i][j] 表示i个骰子和为j的组合数

// 为了简化,用二维vector,i从1到n,j从1到6n

vector<vector<long long>> dp(n + 1, vector<long long>(6 * n + 1, 0));

// 初始化:1个骰子的情况

for (int j = 1; j <= 6; ++j) {

dp[1][j] = 1;

}

// 状态转移:计算i个骰子的情况(i从2到n)

for (int i = 2; i <= n; ++i) {

// i个骰子的和范围:[i, 6i]

for (int j = i; j <= 6 * i; ++j) {

// 第i个骰子的点数k:1~6,且j-k >= i-1(i-1个骰子的最小和)

for (int k = 1; k <= 6; ++k) {

if (j - k >= i - 1) { // 确保i-1个骰子的和合法

dp[i][j] += dp[i-1][j - k];

}

}

}

}

// 总组合数:6^n

long long total = pow(6, n);

// 点数和的范围是[n, 6n],共5n+1个值

vector<float> probabilities;

for (int j = n; j <= 6 * n; ++j) {

// 组合数 / 总组合数 = 概率,转换为float

probabilities.push_back(static_cast<float>(dp[n][j]) / total);

}

return probabilities;

}

// 测试函数:输出n次投骰子的各和值及对应概率

void printProbability(int n) {

vector<float> probs = calculateDiceProbability(n);

if (probs.empty()) {

cout << "n必须大于0!" << endl;

return;

}

cout << "投掷" << n << "次骰子,各点数和的概率:" << endl;

int sum = n; // 初始和为n

for (float p : probs) {

cout << "和为" << sum << ":" << fixed << setprecision(6) << p << endl;

sum++;

}

}

int main() {

// 测试用例:投掷2次骰子

int n = 2;

printProbability(n);

// 你可以修改n的值测试,比如n=3

// int n = 3;

// printProbability(n);

return 0;

}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/24 21:15:15

LangChain 错误处理最佳实践:如何让 Agent 在异常时优雅降级而非崩溃

LangChain 错误处理最佳实践&#xff1a;如何让 Agent 在异常时优雅降级而非崩溃 一、深度引言与场景痛点 去年双十一前夕&#xff0c;我们团队的客服 Agent 突然全线崩溃——原因是上游的 OpenAI API 因为流量激增返回了 429 限流错误&#xff0c;而 Agent 的 Tool 调用链路里…

作者头像 李华
网站建设 2026/7/24 21:14:31

PIX4 uORB 内部消息总线详解

PIX4 uORB 内部消息总线详解1、引言&#xff1a;什么是 uORB&#xff1f;2、 uORB 的核心概念与工作原理2.1 、主题&#xff08;Topic&#xff09;2.2、 发布者&#xff08;Publisher&#xff09;与订阅者&#xff08;Subscriber&#xff09;2.3、 消息&#xff08;Message&…

作者头像 李华
网站建设 2026/7/24 21:10:33

AssetRipper深度解析:跨平台Unity资源提取工具的完全指南

AssetRipper深度解析&#xff1a;跨平台Unity资源提取工具的完全指南 【免费下载链接】AssetRipper GUI application to analyze game files 项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipper 在游戏开发与逆向工程领域&#xff0c;Unity引擎的广泛应用使…

作者头像 李华
网站建设 2026/7/24 21:10:27

Legacy iOS Kit终极指南:如何为经典iOS设备实现系统降级与越狱

Legacy iOS Kit终极指南&#xff1a;如何为经典iOS设备实现系统降级与越狱 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-K…

作者头像 李华