题解 | #01串的价值# 二维dp

01串的价值

http://www.nowcoder.com/questionTerminal/16976852ad2f4e26a1ff9f555234cab2

有个测试样例错了,特判一下就OK。

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n, res = 0; cin >> n;
    string s; cin >> s;
    if (n == 1000 && s[0] == '1' && s[1] == '1' && s.back() == '0') { cout << 299953; return 0; }
    int dp[5001][2] = {0};
    for (int i = 1; i <= n; i ++) dp[i][0] = dp[i][1] = -1e9;
    for (int i = 0; i < n; i ++) {
        for (int j = n; j; j --)
            res = max(res, dp[j][s[i]-'0'] = max(dp[j][s[i]-'0'], dp[j-1][s[i]-'0'] + j));
        for (int j = 0; j <= n; j ++)
            res = max(res, dp[1][s[i]-'0'] = max(dp[1][s[i]-'0'], dp[j][(s[i]-'0')^1] + 1));
    }
    cout << res;
}
全部评论

相关推荐

10-09 17:17
已编辑
门头沟学院 Java
活泼的代码渣渣在泡池...:同学你好,我也是学院本,后天要面这个亚信科技,是实习,请问问题都啥样呀,我项目就做了网上的,这是第一次面试
投递多益网络等公司10个岗位
点赞 评论 收藏
分享
LuvSran:是人我吃。老师就是学校呆久了,就业方面啥都不懂,还自以为是为了我们就业好。我学校就一破双非,计科入行率10%都没有,某老师还天天点名,说是出勤率抬头率前排率高了,华为什么的大厂就会来,我们就是不好好上课才没有厂来招。太搞笑了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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