$O(n^2)$
knapsack problem 이다.
#include<cstdio> #include<algorithm> using namespace std; int n, dp[1001]; int main() { scanf("%d", &n); for (int i = 1, x; i <= n; i++) { scanf("%d", &x); for (int j = i; j <= n; j++) dp[j] = max(dp[j], dp[j - i] + x); } printf("%d", dp[n]); return 0; }
댓글 없음 :
댓글 쓰기