链接:https://ac.nowcoder.com/acm/problem/21840
来源:牛客网
第一行输入一个字符串S (1≤|S|≤501≤|S|≤50)
第二行输入一个整数k (0≤k≤|s|0≤k≤|s|)
输出一个整数
子任务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\n", i); break; } } return 0; }
原文:https://www.cnblogs.com/tp25959/p/10345882.html