【NOIP2001】砝码称重

类似于背包,注意倒序,避免重复

#include
#define R(i,a,b) for(int i=a;i<=b;i++)
#define uR(i,a,b) for(int i=a;i>=b;i--)
using namespace std;

int a[6],f[2001],ans=0;int num[6]={1,2,3,5,10,20};
int main(){
	R(i,0,5)cin>>a[i];
	f[0]=1;
	R(i,0,5)R(j,1,a[i])uR(k,2000,0)if(f[k])f[k+num[i]]=1;
	R(i,1,2000)if(f[i])ans++;
	cout<<"Total="<


你可能感兴趣的:(动态规划之背包问题)