【每日算法Day 95】美团笔试题:四面体方案个数

简介: 【每日算法Day 95】美团笔试题:四面体方案个数

今天就更新一道刚做的美团在线编程题吧。

题目描述

一个四面体,顶点为 S, A, B, C。从 S 出发,每次任意选一条棱走到另一个顶点,可重复走过所有顶点和棱。问走  次之后,回到 S 的方案数是多少?答案对  取模。

题解

明显这是一道动态规划题目,我们令  表示走了  次之后回到 S 的方案数,令  表示走了  次之后在  的概率。注意到这里 A, B, C 是对称的,所以方案数应该完全相同,所以我们定义一个就行了。

那么  步回到 S 的方案数应该就是  步在 A, B, C 的方案数之和:

步在 A 的方案数就是  步在 B, C 的方案数加上  步在 S 的方案数:

当然空间还可以优化,因为只跟上一步有关,所以保存上一步两个状态值就行了。

代码

c++

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod = 1e9 + 7;
const int N = 1000010;
ll dp[N][2];
int main() {
    int k;
    scanf("%d", &k);
    memset(dp, 0, sizeof dp);
    dp[0][0] = 1;
    for (int i = 1; i <= k; ++i) {
        dp[i][0] = (dp[i-1][1] * 3) % mod;
        dp[i][1] = (dp[i-1][1] * 2 + dp[i-1][0]) % mod;
    }
    printf("%lld\n", dp[k][0]);
    return 0;
}

空间优化(c++)

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod = 1e9 + 7;
const int N = 1000010;
ll dp[2];
int main() {
    int k;
    scanf("%d", &k);
    dp[0] = 1;
    dp[1] = 0;
    for (int i = 1; i <= k; ++i) {
        int a = (dp[1] * 3) % mod;
        int b = (dp[1] * 2 + dp[0]) % mod;
        dp[0] = a;
        dp[1] = b;
    }
    printf("%lld\n", dp[0]);
    return 0;
}
相关文章
|
6天前
|
算法
飞行员配对方案(Dinic求最大二分图匹配(对匈牙利算法的优化),以及二分图的建图方式)
飞行员配对方案(Dinic求最大二分图匹配(对匈牙利算法的优化),以及二分图的建图方式)
39 0
|
6天前
|
存储 人工智能 算法
大数乘法的几种算法分析及比较(2014腾讯南京笔试题)
大数乘法的几种算法分析及比较(2014腾讯南京笔试题)
|
6天前
|
机器学习/深度学习 数据采集 运维
高效处理异常值的算法:One-class SVM模型的自动化方案
高效处理异常值的算法:One-class SVM模型的自动化方案
47 1
|
6天前
|
人工智能 自然语言处理 算法
CodeFuse成功支持通义千问算法大赛,评测方案已开源
首届通义千问AI挑战赛成功举办,CodeFuse 为大赛提供技术支持,模型微调框架 MFTCoder 和 CodeFuseEval 评测框架为大赛保驾护航,助力大赛圆满完成。我们基于leetcode 阿里和蚂蚁最新面试题库建设了“模型赛马”在线打榜的评测方案,目前验证集已作为 CodefuseEval 的一项任务在 Github 上开放,欢迎大家下载使用。
81 1
|
10月前
|
算法 安全 调度
【抽水蓄能电站】基于粒子群优化算法的抽水蓄能电站的最佳调度方案研究(Matlab代码实现)
【抽水蓄能电站】基于粒子群优化算法的抽水蓄能电站的最佳调度方案研究(Matlab代码实现)
|
5月前
|
算法 测试技术 C#
C++前缀和算法的应用:分割数组的最多方案数 原理源码测试用例
C++前缀和算法的应用:分割数组的最多方案数 原理源码测试用例
|
8月前
|
缓存 算法 C语言
【数据结构与算法篇】栈与队列(详解)附加Leetcode经典笔试题
【数据结构与算法篇】栈与队列(详解)附加Leetcode经典笔试题
41 0
|
9月前
|
人工智能 文字识别 自然语言处理
深入探索OCR技术:前沿算法与工业级部署方案揭秘
深入探索OCR技术:前沿算法与工业级部署方案揭秘
深入探索OCR技术:前沿算法与工业级部署方案揭秘
|
9月前
|
算法
【漂移-扩散通量重建 FV 方案】用于半导体和气体放电模拟的电子传输的更准确的 Sharfetter-Gummel 算法(Matlab代码实现)
【漂移-扩散通量重建 FV 方案】用于半导体和气体放电模拟的电子传输的更准确的 Sharfetter-Gummel 算法(Matlab代码实现)
|
10月前
|
供应链 算法 Java
java数据结构最经济的地下通道建设方案prim算法
MX是世界上第一大传媒娱乐企业,该公司数十年的经营历史中创作了很多经典影片,此外还经营着很多的规模十分宏大世界级的主题娱乐公园。最近MX公司刚和C国X城市达成协定,共同投资建设C国国内唯一一家主题娱乐公园。
50 0