#include<bits/stdc++.h>
using namespace std;
int main ()
{
int c1,c2,c3,t,n,i,j,k,ans;
cin>>t;
while(t--)
{
cin>>n;c1 = n/150;c2 = n/200;c3 = n/350;int min = 100010;
for(i = 0;i<=c1;i++)
{
for(j = 0;j<=c2;j++)
{
for(k = 0;k<=c3;k++)
{
int a= n-(150*i+200*j+350*k);
if(a>=0&&a<=10000&&a<min) min = a;
}
}
}
cout<<min<<endl;
}
return 0;
}
(暴力枚举法)添加链接描述
完全背包思想
#include<bits/stdc++.h>
using namespace std;
#define MXM 10010
int dp[MXM];
int v[3] = {150,200,350};
int w[3] = {150,200,350};
int main ()
{
int i,j,t,n;
memset (dp,0,sizeof dp);
cin>>t;
while(t--)
{
cin>>n;
for(i = 0;i<3;i++)
for(j = v[i];j<=n;j++)
{
dp[j] = max(dp[j],dp[j-w[i]]+v[i]);
}
cout<<(n-dp[n])<<endl;
}
return 0;
}