Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。
・問題 "Invest Master"
https://onlinejudge.u-aizu.ac.jp/problems/2607
・投資マスター
僕が作成、提出したコードは、以下のとおりです。
・Aizu Online Judge in C++ #Volume26 - 2607 : Invest Master
/* Aizu Online Judge in C++ #Volume26 - 2607 : Invest Master https://onlinejudge.u-aizu.ac.jp/problems/2607 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; ll n,d,x,p[10][10],dp[1<<17]; int main(void){ cin>>n>>d>>x; for(ll i=0;i<d;i++){ for(ll j=0;j<n;j++){ cin>>p[i][j]; } } for(ll i=0;i<d-1;i++){ for(ll j=0;j<1<<17;j++){ dp[j]=0; } for(ll j=0;j<1<<17;j++){ for(ll k=0;k<n;k++){ if(j+p[i][k]>=1<<17){ continue; } dp[j+p[i][k]]=max(dp[j+p[i][k]],dp[j]+p[i+1][k]); } if(j+1<1<<17){ dp[j+1]=max(dp[j+1],dp[j]+1); } } x=dp[x]; } cout<<x<<endl; return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/