题目描述
字符串由"."和ASCII码字母构成,若每次操作将字符串中出现连续两个“.”,则以“.”替代,则可以将函数f(s)定义为使得串中不出现连续2个“.”的最小置换次数。
现考虑m个字符替换操作,每次将指定位置的字符替换为给定字符,求替换后函数的f(s)的值。
输入:
输入有若干组,第一行为2个整数n和m,n表示字符串长度,m表示字符替换次数。
第二行为长度为n的字符串。
接下来m行为m次字符替换操作。
输出:
对m次字符替换操作,输出m行结果,每行表示替换后的f(s)的结果。
1 #include <stdio.h> 2 #include <stdlib.h> 3 int f(char *s, int len) { 4 int cnt = 0; 5 for (int i = 1; i < len; i++) { 6 if (s[i] == '.' && s[i-1] == '.') cnt++; 7 } 8 return cnt; 9 } 10 int main () { 11 int n,m; 12 char *s; 13 while (scanf("%d%d", &n, &m) == 2) { 14 s = (char *)malloc(sizeof(char)*n); 15 scanf("%s",s); 16 int idx; 17 char c; 18 while (m--) { 19 scanf("%d%c",&idx, &c); 20 s[idx-1] = c; 21 printf("%d ", f(s, n)); 22 } 23 } 24 return 0; 25 }