#配列をグローバルで宣言する理由
C++を用いて競技プログラミングを行っていますが、配列をグローバルで宣言している人が多いように思います。
いくつかの関数で利用するのであればそういった意図はわかるのですが、
main関数のみで利用するのにもかかわらず、グローバルで宣言しているのをよく見ます。
例: 動的計画法に関する問題 配列をグローバルで宣言している
main関数の具体的な中身については今回の質問では直接、関係はありません。
cpp
1#include <bits/stdc++.h> 2using namespace std; 3using ll = long long; 4template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; } 5template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; } 6 7// 入力 8int N; 9long long a[100010][3]; // 配列をグローバルで宣言 10 11// DP テーブル グローバルで宣言 12long long dp[100010][3]; 13 14int main() { 15 int N; cin >> N; 16 for (int i = 0; i < N; ++i) for (int j = 0; j < 3; ++j) cin >> a[i][j]; 17 18 // ループ 19 for (int i = 0; i < N; ++i) { 20 for (int j = 0; j < 3; ++j) { 21 for (int k = 0; k < 3; ++k) { 22 if (j == k) continue; 23 chmax(dp[i + 1][k], dp[i][j] + a[i][k]); 24 } 25 } 26 } 27 28 long long res = 0; 29 for (int j = 0; j < 3; ++j) chmax(res, dp[N][j]); 30 cout << res << endl; 31}
質問
上記のような例を考えて、グローバルで配列を宣言するメリットや理由を教えていただければと思います。
ご存知の方がいましたら、お願いします。
回答3件
あなたの回答
tips
プレビュー