#include<iostream> using namespace std; //加入第i张时可以装满,dp[i][j]=dp[i-1][j-w[i]],不加入i张也可以装满,dp[i-1][j]; //dp[i][0]=true,dp[0][j]=false; //优化成一维数组。 int main(){ int value[16]={0,8,8,8,8,8,10,10,10,10,18,18,18,18,18,18}; int maxn=5*8+4*10+6*18; bool dp[maxn+1]; for(int i=0;i<=maxn;++i)dp[i]=false; dp[0]=true; for(int i=1;i<=15;++i){ for(int j=maxn;j>=value[i];--j){ dp[j]=dp[j-value[i]]||dp[j]; } } int answer=0; for(int i=1;i<=maxn;++i){ if(dp[i]){ answer++; } } cout<<answer<<endl; return 0; }