题目
https://cn.vjudge.net/problem/Kattis-canonical
题意
给你n种钱数 问有贪心凑各种钱数是否是最优的
思路
背包一遍和贪心一遍 比较是否是一样优的
代码
#include <algorithm>
#include <iostream>
#include <cstring>
#include <map>
#define rep(i,a,b) for(int i = (a);i<= (b);i++)
using namespace std;
int a[1100];
int main()
{
ios::sync_with_stdio(false);
int n;
cin>>n;
int ans = 0;
rep(i,1,n)
{
int x;
cin>>x;
a[i] = x;
ans+=x;
}
if(ans == 2*(n-1))
{
int f = 1;
int qw = 0;
for(int i = n;i >= 1;i--)
{
if(i == 1) continue;
if(a[i] >= 1)
{
qw -= (a[i] - 1);
if(qw < 0) f = 0;
}
qw++;
if(qw == 0) f = 0;
}
if(f) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
else cout<<"NO"<<endl;
return 0;
}
博客围绕一道算法题展开,题目链接为https://cn.vjudge.net/problem/Kattis - canonical 。题意是给定n种钱数,判断用贪心算法凑各种钱数是否为最优。解题思路是分别进行背包算法和贪心算法,然后比较二者结果是否一样优。
8581

被折叠的 条评论
为什么被折叠?



