简单动态规划

长方体的摆放

http://www.nowcoder.com/questionTerminal/7131601fbf5748df8bf4ed564ce9b07a

此题采用动态规划

设置dp,其中dp[i]表示高度为i的方案数
起初,设置dp[i]全部为0,然后将dp[x]、dp[y]、dp[z]设为1,以此为初始状态。
接着只需将高度依次增加,累加达到这个高度的方案数。

#include <iostream>
#include <cstring>
using std::cin;
using std::cout;
using std::endl;

int main(){
    int n,x,y,z;
    cin>>n>>x>>y>>z;
    int *dp = new int[110]();
    dp[x]=dp[y]=dp[z]=1;
    for(int i=x+1; i<110; ++i){
        dp[i]+=(i-x>0)?dp[i-x]:0;
        dp[i]+=(i-y>0)?dp[i-y]:0;
        dp[i]+=(i-z>0)?dp[i-z]:0;
    }
    cout<<dp[n]<<endl;

    return 0;
}
全部评论

相关推荐

面试了几家,全程问项目,八股一点都不问,可惜准备了这么久
独角仙梦境:现在感觉问八股像是中场休息一样的,问几个八股放松一下再上强度
点赞 评论 收藏
分享
代码飞升:别用口语,后端就写后端,前端就写前端,最后别光后悔
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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