dpの勉強としてatcoderでdpを使った以下の問題を解いてみました。
https://atcoder.jp/contests/dp/tasks/dp_b
以下は実装コードです。
例題はすべて正解するのですが、コードを提出するとWAになります。
なにを間違えていて何を考慮できていないのか教えていただけると幸いです。
他の人のコードを見てみましたが、配るDPで実装されていて貰うDPではなかったのですが、貰うDPではいけないのでしょうか?
C++
1#include <iostream> 2#include <string> 3#include <vector> 4#include <algorithm> 5#include <typeinfo> 6#include <array> 7#include <map> 8 9 10int main() { 11 std::ios_base::sync_with_stdio(false); 12 std::cin.tie(NULL); 13 14 15 int n, k; 16 std::cin >> n >> k; 17 std::vector<int> p; 18 std::vector<int> dp(n, 1 << 29); 19 for (int i = 0; i < n; ++i) { 20 int num; 21 std::cin >> num; 22 p.push_back(num); 23 } 24 dp[0] = 0; 25 26 for (int i = 0; i < n; ++i) { 27 for (int j = 1; j <= std::min(i, k); ++j) { 28 dp[i] = std::min(dp[i], std::abs(p[i - j] - p[i]) + dp[i - j]); 29 } 30 } 31 std::cout << dp[n - 1] << std::endl; 32 33}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。