列表

详情


NC201627. Binary_LIS

描述

现在你有一个长度为n的二进制字符串(只含01),现在想问你其最长不下降子序列为多长?
长度为k的子序列:从长度为n的序列种选取k个元素,按他们的相对顺序排列.

例如:abcd  那么 a / b / c / ad / bd / acd 等 是它的子序列 而 ba / cb 不是

输入描述

第一行一个整数T(1<=T<=100)
接下来每行一个字符串str.(1<=|str|<=1e4).

输出描述

对于每个字符串,输出它的最长不下降子序列

示例1

输入:

3
001
111001
1101010

输出:

3
4
4

说明:

对于第2组样例:
答案子序列为 1111
对于第3组样例:
答案子序列为 1111

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 19ms, 内存消耗: 408K, 提交时间: 2022-03-18 23:56:49

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s;
    int n;
    cin>>n;
    while(n--)
    {
        cin>>s;
        int l=0,y=0;
        for(int i=0;i<s.size();i++)
        {
            if(s[i]=='0') l++;
            else y=max(l,y)+1;
        }
        cout<<max(y,l)<<endl;
        
    }
}

上一题