ACM训练题-第三题-Stones on the Table

本文介绍了一道算法题目,要求计算在一行石头中,为了使任意相邻的石头颜色不同,需要移除的最少石头数量。输入为石头的总数和颜色序列,输出为所需移除的石头数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Time limit2000 msMemory limit262144 kB
total:Time 62ms Memory 12kB
here are n stones on the table in a row, each of them can be red, green or blue. Count the minimum number of stones to take from the table so that any two neighboring stones had different colors. Stones in a row are considered neighboring if there are no other stones between them.

Input
The first line contains integer n (1 ≤ n ≤ 50) — the number of stones on the table.

The next line contains string s, which represents the colors of the stones. We’ll consider the stones in the row numbered from 1 to n from left to right. Then the i-th character s equals “R”, if the i-th stone is red, “G”, if it’s green and “B”, if it’s blue.

Output
Print a single integer — the answer to the problem.

Examples
Input
3
RRG
Output
1
Input
5
RRRRR
Output
4
Input
4
BRBG
Output
0

问题链接:https://vjudge.net/problem/CodeForces-266A
问题简述:桌子上连续有n块石头,每块都有红色,绿色或蓝色。计算从桌子上取下的最小石头数量,这样任何两块相邻的石头都有不同的颜色。如果它们之间没有其他石头,则连续的石头被认为是相邻的。
程序说明:就是计算和之后的相比有多少重复。
AC通过的C++语言程序如下:

#include <iostream>
using namespace std;
int main()
{
	char c[51];
	int j, ans, i;
	while (cin >> j)
	{
		cin >> c;
		ans = 0;
		for (i = 0; i < (j - 1); i++)
		{
			if (c[i] != c[i + 1])
				ans++;
		}
		cout << (j - 1 - ans) << endl;
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值