#include<bits/stdc++.h> using namespace std; int a[111],dp1[111],dp2[111]; int main(){ int n,m; cin>>n>>m; for(int i=1;i<=n;i++){ cin>>a[i]; } memset(dp1,0x3f,sizeof(dp1)); memset(dp2,0x3f,sizeof(dp2)); dp1[0]=dp2[0]=0; for(int i=1;i<=n;i++){ for(int k=1;k<=2;k++){ for(int j=a[i];j<=m;j++){ dp2[j]=min(dp2[j],dp1[j-a[i]]+1); } for(int j=1;j<=m;j++){ dp1[j]=dp2[j]; } } } cout<<dp2[m]; return 0; }
Note.ms
/dfsbfs