Codeforces 266A Stones on the Table 桌上的石頭 – 翻譯與解答

難易度 : 800

英文原文如下

There 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.

中文翻譯

那裏有 n 個石頭在桌上排成一列,他們可以是紅色、綠色或是藍色。計算如果要將石頭拿走來使兩個相鄰的石頭都有不同的顏色的最小數量。

當兩個石頭中間沒有其他石頭時被視為相鄰

輸入

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.

第一行包含了一個整數 n (1 ≤ n ≤ 50)  – 桌上的石頭數量。

下一行則包含了一個字串 s,代表了石頭的顏色。我們可以假設石頭從左到右被標記為 1 到 n。當 i-th 的字元為 “R”, i-th 的石頭就是紅色的, “G” 則是綠色 , “B” 是藍色。

輸出

Print a single integer — the answer to the problem.

印出一個整數 – 問題的答案。

範例

輸入3
RRG
輸出1
輸入5
RRRRR
輸出4
輸入4
BRBG
輸出0

解題思路

這一題還蠻容易的,用一個迴圈來判斷跟紀錄上一個遇到的顏色就好

唯一需要注意的是範例2,若所有顏色相同,則需要取走 n-1 個石頭

C#解決方案

方案1

int n = int.Parse(Console.ReadLine());
string text = Console.ReadLine();

char[] charArr = text.ToCharArray();
char now = charArr[0];
int cnt = 0;

for(int i=1; i<charArr.Length;i++)
{
    if(charArr[i]!=now){
        now = charArr[i];
    }
    else {
        cnt+=1;        
    }
}

Console.WriteLine(cnt);

當顏色一樣的時候,加總需移除的數量

當顏色不一樣的時候,更新當前的顏色~

Java解決方案

方案1

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        scanner.nextLine();

        char[] charArr = scanner.nextLine().toCharArray();
        char now = charArr[0];
        int cnt = 0;

        for(int i=1;i<charArr.length;i++){
            if(charArr[i]!=now){
                now = charArr[i];
            }
            else {
                cnt+=1;        
            }
        }

        System.out.println(cnt);
    }
}

結論

🧡如果文章有幫上你的忙,那是我的榮幸

🧡收藏文章或幫我點個廣告,那都是對我的支持

✅如有任何疑問,歡迎透過留言或messenger讓我知道 !

題目連結 : Problem – 266A – Codeforces

一些其他的Codeforces文章

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *