C题解--“歌尔创客杯”第二届哈尔滨理工大学(荣成)程序设计竞赛

花生米

https://ac.nowcoder.com/acm/contest/6119/C

C 花生米
简单dp,或者说,找规律。
dp[70]的时候有2073693258389777176,所以dp要用long long存,不然会炸。

先算几组,dp[1]=1,dp[2]=2,dp[3]=4,dp[4]=7,dp[5]=13......
得公式为dp[i]=dp[i-1]+dp[i-2]+dp[i-3];

还是算不出这个公式的话,我可以再详细帮你们算一下。
dp[1]=1 [1]
dp[2]=2 [11,2]
dp[3]=4 [111,12,21,3]
dp[4]=7
[1111,112,121,13],开头为1的时候为dp[3]=4
[211,22],开头为2的时候为dp[2]=2
[31],开头为3的时候为dp[1]=1
所以dp[4]=dp[3]+dp[2]+dp[1]

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll dp[100];
void f(){
    dp[1]=1;
    dp[2]=2;
    dp[3]=4;
    for(int i=4;i<100;i++)
        dp[i]=dp[i-1]+dp[i-2]+dp[i-3];
}
int main(){
    int n;
    f();
    scanf("%d",&n);
    while(n--){
        int m;
        scanf("%d",&m);
        printf("%lld\n",dp[m]);
    }
    return 0;
}
全部评论

相关推荐

昨天 18:49
同济大学 设计
点赞 评论 收藏
分享
2024-12-27 13:08
华南理工大学 Java
蝴蝶飞出了潜水钟丿:多看一眼就会💥
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务