类似于零钱兑换,蓝桥杯万事记得用long long
#include <stdio.h>
#define pl 1000000007;
long long dp[1000009]={0}; 多少种方案
long long a[1000009]={0},i,j,n;
int main()
{
scanf("%lld",&n);
for(i=0;i<3;i++)
scanf("%lld",&a[i]);
dp[0]=1;没有台阶不用走,一种方案
for(i=1;i<=n;i++)//台阶
for(j=0;j<3;j++)//步骤方案
{ if(i>=a[j])
dp[i]=(dp[i]+dp[i-a[j]])%pl;dp[i]+就是累加的效果} dp[i-a[j]就是当前选不同台阶数的意思dp[5-3]就是代表最终5个台阶选择了含一次走三步这个方案
printf("%lld",dp[n]);
return 0;}
台阶方案 dp 蓝桥杯
最新推荐文章于 2024-05-21 21:12:13 发布