AtCoderアルゴリズムと数学演習問題集の009 ”Brute Force 2” を解いています。
009 - Brute Force 2
どこが間違っているのか分かりません。
自分のコードのどこが間違っているか指摘してほしいです。
お願いします。
自分のこれです。
c++
#include<iostream>#include<vector>using namespace std; template<class T>void ch(T& a, T b) { if (a < b)a = b;}int main() { int i, j; long long n, w; cin >> n >> w; vector<long long>a(n + 1); vector<vector<long long>>dp(n + 5, vector<long long>(w + 5, 0)); for (i = 1; i <= n; i++)cin >> a[i]; for (i = 1; i <= n; i++) { for (j = 0; j <= w; j++) { dp[i][j] = dp[i - 1][j]; if (j - a[i] >= 0) { dp[i][j] = a[i]; ch(dp[i][j], (dp[i][j] += dp[i - 1][j - a[i]])); } } } for (i = 1; i <= n; i++) { for (j = 0; j <= w; j++) { cout << dp[i][j]; } cout << endl; } if (dp[n][w] == w)cout << "Yes" << endl; else cout << "No" << endl;}

0 コメント