close
題目:幾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
在輸出之前,再用判斷跳出來即可~~
 
範例程式碼:
  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
arrow
arrow
    全站熱搜

    佑佑 發表在 痞客邦 留言(0) 人氣()