题解 | #假期#

假期

http://www.nowcoder.com/practice/7cd9a140387e455a972e8fea0e74be2c

  1. 首先这后一天和前一天得许多状态相关,那必然使用动态规划。
  2. 假设加验证得思想可以加快解题速度
#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    int x;

    vector<int> c,fit;
    cin>>n;
    for(int i =0; i< n;i++){
        cin>>x;
        c.push_back(x);
    }

    for(int i =0; i< n;i++){
        cin>>x;
        fit.push_back(x);
    }

    //和前面得状况有关系(3个状态种,到底i天的最大天数,休息日不用加1)
    vector<vector<int>> dp(3,vector<int>(n+1,0));//动归,默认初始化为0

    dp[0][0] = dp[1][0] = dp[2][0] = 0;

    for(int i = 1; i<=n;i++){

        //休息最大天数(后面无需加1)
        dp[0][i] = max(dp[0][i-1],max(dp[1][i-1],dp[2][i-1]));

        if(c[i-1]){
            dp[1][i] = max(dp[0][i-1],dp[2][i-1]) + 1;
        }

        if(fit[i-1]){
            dp[2][i] = max(dp[0][i-1],dp[1][i-1]) + 1;
        }
    }
    //减去最大得就是休息得日子
    cout<<n - max(dp[0][n],max(dp[1][n],dp[2][n]))<<endl;




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

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

全部评论

相关推荐

10-05 23:02
东北大学 Java
我说句实话啊:那时候看三个月培训班视频,随便做个项目背点八股,都能说3 40w是侮辱价
点赞 评论 收藏
分享
Java抽象带篮子:难蚌,点进图片上面就是我的大头😆
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务