题解 | #小Q的歌单#

小Q的歌单

http://www.nowcoder.com/practice/f3ab6fe72af34b71a2fd1d83304cbbb3

  1. 01背包问题
#include<bits/stdc++.h>
using namespace std;
const int mod =1000000007;
//背包问题的演变(只不过是两种物品,每种物品得)
vector<vector<int>> dp(1001,vector<int>(210,0));
int main(){

    int k, a,x,b,y;
    cin>>k;
    cin>>a>>x>>b>>y;
    int length = x+y;

    int len[210];
    for(int i = 1; i<= x;i++){
        len[i] = a;
    }
    for(int i = x +1; i<=length;i++){
        len[i] = b;
    }
    dp[0][0] = 1;//必要的初始条件,否则加出来永远是0
    for(int j = 1;j <=length; j++){
        for(int i = 0; i<=k; i++){
            if(i>=len[j]){
                dp[i][j] = (dp[i][j-1] + dp[i-len[j]][j-1])%mod;
            }else{
                dp[i][j] = (dp[i][j-1])%mod;
            }
        }

    }

    cout<<dp[k][length]<<endl;


    return 0;
}
大厂笔试题题解 文章被收录于专栏

主要是公司笔试题得一些总结

全部评论

相关推荐

牛至超人:哈工大已经很棒了,不需要加括号了,然后咋没有实习经历呢?火速趁寒假整一段实习,导师不让就狠狠肘击
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务