題目:幾A幾B?
這經典的題目是新手出戰期間遇到的小怪之一,不過了結他的規則和玩法,就可以和其他人對戰咯~~
題目:製作一個4位數的猜數字系統,若此數字和位置跟答案完全相同則出現A,若此數的數值跟答案一樣但位置不一樣則出現B, 4A時 代表猜中此數字。
假設答案為:1234
若輸入:
5621
4321
1324
1234
0000
則會輸出:
0A2B
0A4B
2A2B
4A0B
這題是輸入0000就結束,也有題目是4A就結束
一般上課太無聊,就會和左右鄰居玩這個遊戲,規則很熟的你會發現
AB的共通點就是數字一樣,他們只差位置不一樣
所以第一個if就出現了,if( 陣列 X [ i ] == Y [ j ] )
聰明的你就知道i和j是甚麼了吧~~沒錯就是它們的位置
所以第2個if就出現啦!!
if( i == j )
這就能區分出A和B咯
最後再把數字對和位置對的A裡記錄起來,假設a++
反之數字對但位置錯的數字也記錄起來,假設b++
之後再輸出a和b的總和就行咯!!
終止的0000判斷如同數字判斷一樣
你可以用一個計數器記錄起來,每一次讀到就加1
在輸出之前,再用判斷跳出來即可~~
範例程式碼:
-
#include <iostream>
using namespace std;
int main() {
string ans;
string guess;
int a;
cin >>a;
while(a--){
int A = 0, B = 0;
while(cin >> ans>> guess)
{
if(guess != "0000")
{
for(int i = 0;i < 4;i++)
{
for(int j = 0;j < 4;j++)
{
if(i == j && ans[i] == guess[j])
{
A++;
}
else if(i != j && ans[i] == guess[j])
{
B++;
}
}
}
cout << A << "A" << B << "B" << endl;
A = 0;
B = 0;
}
else
{
break;
}
}
}
return 0;
}
自己跑跑看喔!!
end
留言列表