http://codevs.cn/problem/1068/
我的思路是由len推导len+1层。
因为计算m个卡片最大值,需要知道m-1个卡片的最大值。(不知道网上其他人的算法是怎么理解的,感觉自己的算法很耗时间)
#include
using namespace std;
int dp[41][41][41][41];
int a[351];
int n,m,t;
int mi=0,mj=0,mk=0,ml=0;
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
int mt=m;
while(mt--){
cin>>t;
if(t==1){
++mi;
}else if(t==2){
++mj;
}else if(t==3){
++mk;
}else if(t==4){
++ml;
}
}
for(int len=0;len<=m;len++){
// cout<<"-----------------------"<ml)continue;
// cout<