当前位置: 首页 > news >正文

Dice Combinations(Dynamic Programming)

题目描述

Your task is to count the number of ways to construct sum n by throwing a dice one or more times. Each throw produces an outcome between 1 and  6.
For example, if n=3, there are 4 ways:
1+1+1
1+2
2+1
3

输入

The only input line has an integer n.
Constraints
1 ≤ n ≤ 10^6

输出

Print the number of ways modulo 10^9+7.

样例输入 
3
样例输出
4
思路分析

动态规划,类似于爬楼梯。

n012345678
dp[n]11248163263125

每次掷骰子,可以得到1~6中任意一个数字,所以状态转移方程为:dp[n]=dp[n-1]+dp[n-2]+dp[n-3]+dp[n-4]+dp[n-5]+dp[n-6]。其中n-i<0时,dp[n-i]=0;dp[0]=1。

假设我们现在正在爬楼梯,一个六面骰子掷到哪个数,就爬几个台阶。想要到达第八层台阶,可以在第2层台阶掷出数字6,也可以在第3层台阶掷出数字5,在第4层台阶掷出数字4,在第5层台阶掷出数字3,在第6层台阶掷出数字2,可以在第7层台阶掷出数字1。这样看来,一共有六种方法可以实现到达第八层台阶,即dp[8]=dp[7]+dp[6]+dp[5]+dp[4]+dp[3]+dp[2]。

代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll mod=1e9+7;
ll n;
int main(){cin>>n;vector<ll>dp(n+1,0);dp[0]=1;for(ll i=1;i<=n;i++){for(int j=1;j<=6;j++){if(i-j>=0){dp[i]=(dp[i]+dp[i-j])%mod;}}}cout<<dp[n];return 0;
}

http://www.lryc.cn/news/608114.html

相关文章:

  • 8.2 状态机|贪心|dfs_dp
  • Linux初步认识与指令与权限
  • 机器学习——K 折交叉验证(K-Fold Cross Validation),实战案例:寻找逻辑回归最佳惩罚因子C
  • Jotai:React轻量级原子化状态管理,告别重渲染困扰
  • React ahooks——副作用类hooks之useThrottleFn
  • react 和 react native 的开发过程区别
  • Javascript面试题及详细答案150道之(016-030)
  • 【REACT18.x】使用vite创建的项目无法启动,报错TypeError: crypto.hash is not a function解决方法
  • NEXT.js 打包部署到服务器
  • OLTP,OLAP,HTAP是什么,数据库该怎么选
  • React ahooks——副作用类hooks之useThrottleEffect
  • 超平面(Hyperplane)是什么?
  • 深入 Go 底层原理(十四):timer 的实现与高性能定时器
  • 卡尔曼滤波轨迹跟踪算法与MATLAB实现
  • 关于Web前端安全防御XSS攻防的几点考虑
  • 【软考中级网络工程师】知识点之 VRRP
  • 智能学号抽取系统V5.6.4重磅发布
  • 【Docker】RK3576-Debian上使用Docker安装Ubuntu22.04+ROS2
  • 28Rsync免密传输与定时备份
  • 【学习笔记】MySQL技术内幕InnoDB存储引擎——第9章 性能调优
  • leetcode热题——组合
  • Android性能优化--16K对齐深入解析及适配指南
  • 【数据结构初阶】--排序(二)--直接选择排序,堆排序
  • AI Agent开发学习系列 - LangGraph(10): 带有循环的Looping Graph(练习解答)
  • JavaScript特殊集合WeakMap 的使用及场景介绍
  • 【昇腾推理PaddleOCR】生产级部署方式
  • 什么是AWS Region和AWS Availability Zones
  • php完整处理word中表单数据的方法
  • Word怎样转换为PDF
  • 使用AWS免费EC2自建RustDesk远程桌面连接服务