zoukankan      html  css  js  c++  java
  • Binary String To Subsequences solution

    题意

    给定一个01s,完全分割成若干子序列,其中的子序列不包含两个相邻的01(eg:"0101","1010")。s按这样的分割方式,最少能分出多少串子序列?同时,还要求输出s串中每一字符所在的分割出的子序列编号

    #include <iostream>
    #include <vector>
    #include <string>
    using namespace std;
    int main(){
        int q; 
        scanf("%d", &q);
        while(q--){
            vector<int> ans;
            vector<int> k1, k0;
            int n; 
            scanf("%d", &n);
            string str; 
            cin >> str;
            for (int i = 0; i < n; i++){
                int nk = k0.size() + k1.size();
                if(str[i] == '0'){
                    if(k1.empty()){ 
                        k0.push_back(nk);
                    } 
                    else{ 
                        nk = k1.back(); 
                        k0.push_back(nk); 
                        k1.pop_back(); 
                    }
                }
                else {
                    if(k0.empty()){ 
                        k1.push_back(nk);
                    }
                    else{ 
                        nk = k0.back();
                        k1.push_back(nk);
                        k0.pop_back();
                    }
                }
                ans.push_back(nk);
            }
            printf("%d
    ", (int)(k1.size() + k0.size()));
            for (int i = 0; i < n; i++){
                printf("%d%c", ans[i] + 1, (i == n - 1) ? '
    ' : ' ');
            }
        }
    }
  • 相关阅读:
    线程queue
    定时器
    event模拟数据库链接
    最速下降法(梯度下降法)
    神经网络中的反向传播算法
    批量学习和在线学习的区别
    LMS算法
    粒子群算法
    遗传算法
    logistic回归
  • 原文地址:https://www.cnblogs.com/hrlsm/p/13463801.html
Copyright © 2011-2022 走看看