質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

1140閲覧

Atcoder abc165_c 期待する答えが出力されません

nonoilaoziso

総合スコア19

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/01/09 04:24

編集2021/01/09 07:33

以下のコードで 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}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

if (sz(A) >= 1) last = A[sz(A) - 1]; を if (sz(A) >= 1) last = A[sz(A) - 1] - '0'; としました

投稿2021/01/09 10:30

nonoilaoziso

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

episteme

2021/01/09 11:37

「関数 func 内の debug のところで確認すると、ひたすら空の文字列が出力されました。」 は関係なかったってことですか?
guest

0

C++

1 string A = ""; // ← こいつのせいで 2 3 func(A); // func には常に空文字列が渡されています。

投稿2021/01/09 10:19

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問