iT邦幫忙

2

拜託求救

c++

內容
不知何時開始,一種「黑白棋」的遊戲開始流行,其遊戲規則如下:

一開始會有一排棋子,由黑色 (b) 與白色 (w) 兩種顏色的棋子組成;接著玩者要把最前面的兩顆棋子拿掉,

如果這兩顆棋子同色 (同為黑色或同為白色),就在整排棋子的最後面加上一顆白色棋子,否則加上一顆黑色棋子。

重複這個動作,直到剩下一顆棋子為止,並輸出最後剩下的棋子是甚麼顏色?

輸入說明
第一行一個整數 N (N<=10000),代表測資的筆數。

接下來 N 行,每行一筆測資,由 'b' 與 'w' 構成的字串,代表黑白棋子 (每行<=1000 棋子)。

輸出說明
如果最後一顆棋子為黑色,輸出 b

如果最後一顆棋子為白色,輸出 w

範例輸入
3
wbw
bwwb
wwbwwbb
範例輸出
b
w
b

1
海綿寶寶
iT邦大神 1 級 ‧ 2021-05-26 10:15:24
最佳解答

https://ithelp.ithome.com.tw/upload/images/20210526/20001787Iaj7uiaPUZ.png

#include <iostream>

using namespace std;

int N;
string str;

void process(string s) {
    s = s.substr(0, s.length()-1);
    while (s.length() > 1) {
        s = s.substr(2, s.length()-2) + ((s.substr(0,1)==s.substr(1,1))? "w":"b");
    }
    cout<<s<<endl;  
}  
void a283_func() {  
    cin>>N;  
    for(int i=0;i<=N;i++) {  
        getline(cin, str);  
        if(i==0) {continue;}  
        process(str);  
    }  
}  
int main(void) {  
    a283_func();  
}  
4
haward79
iT邦新手 4 級 ‧ 2021-05-26 07:27:23

你這是功課 ... 嗎?
多多動手、動腦比較有幫助

numCase = int(input(''))

for i in range(numCase):
    series = input('')

    while len(series) > 1:
        if series[0] == series[1]:
            series += 'w'
        else:
            series += 'b'

        series = series[2:]

    print(series)
2
黃彥儒
iT邦高手 1 級 ‧ 2021-05-26 20:48:20

我覺得黑白棋沒有很流行耶…

3
franx0722
iT邦新手 5 級 ‧ 2021-05-27 08:23:04

林口高中??
http://163.20.185.15/ShowProblem?problemid=a283
連字都懶得打 全複製貼上.....

我要發表回答

立即登入回答