以下のコードで Atcoder abc165_c (https://atcoder.jp/contests/abc165/tasks/abc165_c)の入力例を試したのですが、すべてで 0 が返ってきます。関数 func 内の debug のところで確認すると、ひたすら空の文字列が出力されました。どなたか理由を教えていただけたら嬉しいです。
C++
1#include <bits/stdc++.h> 2#define _GLIBCXX_DEBUG 3#define rep(i, n) for (int i = 0; i < (int)(n); i++) 4#define rep2(i, s, n) for (int i = (s); i < (int)(n); i++) 5#define rep3(i, s, n) for (int i = (s); i > (int)(n); i--) 6#define all(v) v.begin(), v.end() 7#define pb push_back 8#define sz(x) ((int)(x).size()) 9typedef long long ll; 10using namespace std; 11using Graph = vector<vector<int>>; 12template<class T>bool chmax(T & a, const T & b) { if (a < b) { a = b; return 1; } return 0; } 13template<class T>bool chmin(T & a, const T & b) { if (b < a) { a = b; return 1; } return 0; } 14 15int N, M, Q; 16int a[50], b[50], c[50], d[50]; 17int Max = 0; 18 19void func(string A) { 20 if (sz(A) == N) { 21 /* debug 22 cout << A << "\n"; 23 */ 24 int score = 0; 25 rep(i, Q) { 26 if (A[b[i] - 1] - A[a[i] - 1] == c[i]) score += d[i]; 27 } 28 chmax(Max, score); 29 return; 30 } 31 int last = 1; 32 if (sz(A) >= 1) last = A[sz(A) - 1]; 33 rep2(i, last, M + 1) { 34 string nA = A; 35 nA += ('0' + i); 36 func(nA); 37 } 38} 39 40int main() { 41 cin.tie(0); 42 ios::sync_with_stdio(false); 43 44 cin >> N >> M >> Q; 45 rep(i, Q) cin >> a[i] >> b[i] >> c[i] >> d[i]; 46 string A = ""; 47 48 func(A); 49 50 cout << Max << "\n"; 51 52 return 0; 53}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/09 11:37