怎么注册自己网站,企业信息公开查询,收录软件最多的网站,朝阳做网站哪家公司好今天把采药A了#xff0c;属于dp问题#xff0c;主要思路是把所有时间都存进一个数组中#xff0c;数组的值对应药的价值#xff0c;下标是时间#xff0c;然后记忆化搜索#xff0c;碰到价值高的就赋值#xff0c;相比于摘花生#xff0c;辰辰是一个聪明的猴子#x… 今天把采药A了属于dp问题主要思路是把所有时间都存进一个数组中数组的值对应药的价值下标是时间然后记忆化搜索碰到价值高的就赋值相比于摘花生辰辰是一个聪明的猴子不废话了上代码。Code#include iostream#include cstringusing namespace std;int ji[1002];int main() { int t,m,a,b,i,j; while(cintm) { memset(ji,0,sizeof(ji)); for(i1;im;i) { cinab; if(t-a0) for(jt-a;j0;j--) if(ji[j]bji[ja]) ji[ja]ji[j]b; } coutji[t]endl; } return 0; }附带另一个问题多多摘花生这里不吐槽那猴子有多笨了下面的数据足以说明2 8 86 0 0 0 0 0 0 00 0 0 0 0 0 0 8那只猴子如果聪明的话能摘14个笨蛋猴子只能摘8个。Code#include iostream#include cstdlibusing namespace std;int main(){ int n; int row, col; int time; cin n; while (n--) { cin row col time; int i, j; int curPi 0, curPj; int p[51][51]; int timet 0; int pg 0; for (i 1; i row; i) { for (j 1; j col; j) { cin p[j]; } } int maxPi 0, maxPj 0; while (timet time) { int max 0; for (i 1; i row; i) { for (j 1; j col; j) { if (p[j] max) { max p[j]; maxPi i; maxPj j; } } } if (max 0) break; if (curPi 0) curPj maxPj; if (timet (abs(maxPj - curPj) abs(maxPi - curPi) 1 maxPi) time) { timet timet abs(maxPj - curPj) abs(maxPi - curPi) 1; curPi maxPi; curPj maxPj; pg p[curPi][curPj]; p[curPi][curPj] 0; } else break; } cout pg endl; } return 0; }代码还老长。。。。。