Codeforces Round #163 (Div. 2) A. Stones on the Table

http://codeforces.com/problemset/problem/266/A

题意:
RGB代表石头的颜色,输入一个字符串。
问最少取走几块石头,可以让相邻的石头颜色不相同。

方法一:找不同

也就是找不同的相邻对,2块不同的时候,则是一个不同相邻对。
以此类推,res个不同相邻对,攻有res+1快剩下的石头。
取走的石头为t - (res + 1)

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <bits/stdc++.h>
using namespace std;

int main() {
int t, res = 0;
char c[50 + 5];
while (cin >> t) {
cin >> c;
for (int i = 0; i < t - 1; i++) {
if (c[i] != c[i + 1]) res++;
}
cout << t - 1 - res << endl;
}
return 0;
};

方法二:找相同

如果2块都是红石头,即输入RR,那么取走一块石头即可。
取走的个数 = 颜色相同的相邻对的个数。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <bits/stdc++.h>
using namespace std;

int main() {
int t, res = 0;
char c[50 + 5];
while (cin >> t) {
cin >> c;
for (int i = 0; i < t - 1; i++) {
if (c[i] == c[i + 1]) res++;
}
cout << res << endl;
}
return 0;
};