APG4bで自分が書いたコード4　EX16~19

自分のアカウントです


https://atcoder.jp/users/dghht



<!-- 
[]()
```c++:EX.cpp

```
 -->
[APG4bで自分が書いたコード3](https://qiita.com/sy1/items/bb8e7df26a3bb3d925fd)の続き

[EX16 - 隣り合う同じ値を探す
](https://atcoder.jp/contests/APG4b/tasks/APG4b_cg)
```c++:EX.cpp
#include <bits/stdc++.h>
using namespace std;

int main() {
    vector<int> data(5);
    for (int i = 0; i < 5; i++) {
        cin >> data.at(i);
    }
    // if (data.at(1) == data.at(2) || data.at(2) == data.at(3) || data.at(3) == data.at(4))
    int y = 0;
    for (int i = 0; i < 4; i)
    {
        if (data.at(i) == data.at(i+=1))
        {
            y=1;
            break;
        }

    }
    if (y == 1)
        cout << "YES";
    else cout << "NO";
    cout << endl;
    // dataの中で隣り合う等しい要素が存在するなら"YES"を出力し、そうでなければ"NO"を出力する
 
}
```


[EX17 - 果物屋さんでお買い物 
](https://atcoder.jp/contests/APG4b/tasks/APG4b_cf)
```c++:EX17.cpp
#include <bits/stdc++.h>
using namespace std;
 
int main() {
  int N, S;
  cin >> N >> S;
  vector<int> A(N), P(N);
  for (int i = 0; i < N; i++) {
    cin >> A.at(i);
  }
  for (int i = 0; i < N; i++) {
    cin >> P.at(i);
  }
 int X=0;
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < N; j++) {
   if (A.at(i)+P.at(j)==S){X++;}
 }
  }
cout << X << endl;
 
  // リンゴ・パイナップルをそれぞれ1つずつ購入するとき合計S円になるような買い方が何通りあるか

}

```
[EX18 - ゲーム大会](https://atcoder.jp/contests/APG4b/tasks/APG4b_ce)
```c++:EX18.cpp
#include <bits/stdc++.h>

using namespace std;

int main() {
    int N, M; //M試合
    cin >> N >> M;
    vector<int> A(M), B(M);
    for (int i = 0; i < M; i++) {
        cin >> A.at(i) >> B.at(i);
    }



    // ここにプログラムを追記


    // (ここで"試合結果の表"の2次元配列を宣言)
    vector<vector<char>> table(N, vector<char>(N));
    for (int i = 0; i < N; i++) {
        for (int j = 0; j <N; j++) {
            table.at(i).at(j) = '-';
        }

    }

  /*  for (int i = 0; i < M; i++) {
        table.at(A.at(i)).at(B.at(i)) = 'o';
        table.at(B.at(i)).at(A.at(i)) = 'x';
    }

 */
     for (int i = 0; i < M; i++) {
        table.at(A.at(i)-1).at(B.at(i)-1) = 'o';
        table.at(B.at(i)-1).at(A.at(i)-1) = 'x';
    }

  
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++) {
            cout << table.at(i).at(j);
            if (j == N - 1) { cout << endl; }
            else
            {
                cout << " ";
            }
        }

    }
}
```
[EX19 - 九九の採点	](https://atcoder.jp/contests/APG4b/tasks/APG4b_cd)
```c++:EX19.cpp
#include <bits/stdc++.h>
using namespace std;

// 参照渡しを用いて、呼び出し側の変数の値を変更する

constexpr int size = 9;

void saiten(vector<vector<int>> &A, int& correct_count, int& wrong_count/* 呼び出し側に対応するように引数を書く */) {
    // 呼び出し側のAの各マスを正しい値に修正する
      for (int i = 0; i < 9; i++) {
        for (int j = 0; j < 9; j++) {

            if ((i+1) * (j+1) == A.at(i).at(j))
            {
                correct_count++;
           }
            else {
                wrong_count++;
            }
        A.at(i).at(j)=(i+1)*(j+1) ;
        }
    }
    
    
    // 
    // 
    // 
    // Aのうち、正しい値の書かれたマスの個数を correct_count に入れる
    // Aのうち、誤った値の書かれたマスの個数を wrong_count に入れる




}

// -------------------
// ここから先は変更しない
// -------------------
int main() {
    // A君の回答を受け取る
    vector<vector<int>> A(9, vector<int>(9));
    for (int i = 0; i < 9; i++) {
        for (int j = 0; j < 9; j++) {
            cin >> A.at(i).at(j);
        }
    }

    int correct_count = 0; // ここに正しい値のマスの個数を入れる
    int wrong_count = 0;   // ここに誤った値のマスの個数を入れる

    // A, correct_count, wrong_countを参照渡し
    saiten(A, correct_count, wrong_count);


    // 正しく修正した表を出力
    for (int i = 0; i < 9; i++) {
        for (int j = 0; j < 9; j++) {
            cout << A.at(i).at(j);
            if (j < 8) cout << " ";
            else cout << endl;
        }
    }
    // 正しいマスの個数を出力
    cout << correct_count << endl;
    // 誤っているマスの個数を出力
    cout << wrong_count << endl;
}
```
[EX20.報告書の枚数
](https://atcoder.jp/contests/apg4b/tasks/APG4b_cc)
未提出
再帰関数全然わからない