洛谷 P2347 砝码称重 题解

每日一题 day12 打卡

Analysis

完全背包

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #define maxn 1000+10
 6 using namespace std;
 7 inline int read() 
 8 {
 9     int x=0;
10     bool f=1;
11     char c=getchar();
12     for(; !isdigit(c); c=getchar()) if(c=='-') f=0;
13     for(; isdigit(c); c=getchar()) x=(x<<3)+(x<<1)+c-'0';
14     if(f) return x;
15     return 0-x;
16 }
17 inline void write(long long x)
18 {
19     if(x<0){putchar('-');x=-x;}
20     if(x>9)write(x/10);
21     putchar(x%10+'0');
22 }
23 int weight[10]={0,1,2,3,5,10,20},a[10],dp[maxn];
24 int ans;
25 int main()
26 {
27     for(int i=1;i<=6;i++) a[i]=read();
28     dp[0]=1;
29     for(int i=1;i<=6;i++)
30         for(int j=1;j<=a[i];j++)
31             for(int k=1000;k>=0;k--) 
32             {
33                 if(dp[k]==1) dp[k+weight[i]]=1;
34             }
35     for(int i=1;i<=1000;i++) if(dp[i]==1) ans++;
36     printf("Total=");
37     write(ans);
38     return 0;
39 } 

请各位大佬斧正(反正我不认识斧正是什么意思)

猜你喜欢

转载自www.cnblogs.com/handsome-zyc/p/11519537.html