#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;
}


京公网安备 11010502036488号