Uva 刷題紀錄 08/16

前情提要 這篇文章記錄了我今天在 UVA Online Judge 的刷題過程,挑戰了兩道題目,分別是與邏輯判斷相關的題目和簡單的輸入輸出處理題。透過這些題目,練習了模擬操作與字串處理的技巧,以下是解題紀錄與程式碼實現。 解題程式 題目連結 340 這題題目的意思就是我要到 0 就代表了要結束輸入,也就是程式要結束,然後如果 guess[0] 因為他有說範圍 19 所以 ...

前情提要

這篇文章記錄了我今天在 UVA Online Judge 的刷題過程,挑戰了兩道題目,分別是與邏輯判斷相關的題目和簡單的輸入輸出處理題。透過這些題目,練習了模擬操作與字串處理的技巧,以下是解題紀錄與程式碼實現。

解題程式

  • 題目連結 340

  • 這題題目的意思就是我要到 0 就代表了要結束輸入,也就是程式要結束,然後如果 guess[0] 因為他有說範圍 1~9 所以 0 就代表這筆測試資料結束,那麼我們就會知道輸入怎麼做處理,現在剩下邏輯的部份,那我的想法就是分別計算 位置和數字都完全等於的數目,在用矩陣去紀錄哪些已經數字已經被記錄了,如果都沒有被記錄過,guess[i] == key[j] 哪麼我就把它記錄下來處理後就是答案了。

<!–more–>

#include <bits/stdc++.h>
#define maxn 1000+10

using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);

  int n;
  int kase=0;
  vector<int> key(maxn);
  vector<int> guess(maxn);
  while(cin >> n && n != 0){
    cout << "Game " << ++kase << ":"<< "\n";
    for(int i=0;i<n;i++)
      cin >> key[i];

    while(true){
      int A =0,B=0;
      for(int i=0;i<n;i++){
        cin >> guess[i];
      }

      if(guess[0] == 0) break;
      vector<bool> used_key(n,false), used_guess(n,false);
      for(int i=0;i<n;i++){
        if(key[i] == guess[i]){
          A++;
          used_key[i] = true;
          used_guess[i] = true;
        }
      }

      for(int i=0;i<n;i++){
        if(!used_guess[i]){
          for(int j=0;j<n;j++){
            if(!used_key[j] && guess[i] == key[j]){
              B++;
              used_key[j] = true;
              break;
            }
          }
        }
      }
      cout << "    " << "(" << A << "," << B << ")" << "\n";
    }
  }
  return 0;
}

#include <bits/stdc++.h>

using namespace std;

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);

  int c,q=1;
  while((c= getchar()) != EOF){
    if(c == '"'){
      printf("%s",(q ? "``" : "''"));
      q = !q;
    }
    else{
      printf("%c",c);
    }
  }

  return 0;
}