zoukankan      html  css  js  c++  java
  • 一战到底编程挑战 平衡字符串

    链接:https://ac.nowcoder.com/acm/problem/21840
    来源:牛客网

    有一个字符串S,由加号'+' 和 减号'-'组成

    现在要反转一些字符(加号变减号,减号变加号)来使得至多有k个前缀是负平衡的

    如果一个前缀的减号数量大于加号数量,我们称这个前缀是负平衡的

    输入描述:

    第一行输入一个字符串S (1|S|501≤|S|≤50)
    第二行输入一个整数k (0k|s|0≤k≤|s|)

    输出描述:

    输出一个整数
    示例1

    输入

    复制
    ---
    1

    输出

    复制
    1
    示例2

    输入

    复制
    +-+-
    0

    输出

    复制
    0
    示例3

    输入

    复制
    -+-+---
    2

    输出

    复制
    1

    备注:

    子任务1:n <= 10
    子任务2:n <= 20
    子任务3:无限制
    #include <stdio.h>
    #include <cstring>
    char s[1010], t[1010];
    void Work(int c, int n){
        for(int i = 0; i < n; i++){
            t[i] = s[i];
            if(t[i] == '-' && c) c--, t[i] = '+';
        }
    }
    int Count(int n){
        int cnt = 0, rnt = 0;
        for(int i = 0; i < n; i++){
            cnt += t[i] == '+' ? 1 : -1;
            rnt += cnt < 0;
        }
        return rnt;
    }
    int main(){
        int k; scanf("%s%d", s, &k);
        int n = strlen(s);
        for(int i = 0; i <= n; i++){
            Work(i, n);
            if(Count(n) <= k){
                printf("%d
    ", i);
                break;
            }
        }
        return 0;
    }
  • 相关阅读:
    2019.7.28刷题统计
    2019.7.27刷题统计
    2019.7.26刷题统计
    2019.7.22刷题统计
    qdoj.xyz 6.18
    qdoj.xyz 6.17
    qdoj.xyz 6.16
    qdoj.xyz 6.15
    qdoj.xyz 6.14
    qdoj.xyz 6.13
  • 原文地址:https://www.cnblogs.com/tp25959/p/10345882.html
Copyright © 2011-2022 走看看