标签:codeforces 贪心法
1.题目描述:点击打开链接
2.解题思路:本题利用贪心法解决。首先对数组排序,由大到小选择,恰好大于等于k时候停止即可。如果全部相加仍然小于k,则无解。
3.代码:
#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<algorithm> #include<string> #include<sstream> #include<set> #include<vector> #include<stack> #include<map> #include<queue> #include<deque> #include<cstdlib> #include<cstdio> #include<cstring> #include<cmath> #include<ctime> #include<functional> using namespace std; #define me(s) memset(s,0,sizeof(s)) typedef long long ll; typedef unsigned int uint; typedef unsigned long long ull; typedef pair <int, int> P; const int N=20; int a[N]; int k; int main() { while(~scanf("%d",&k)) { for(int i=1;i<=12;i++) scanf("%d",&a[i]); sort(a+1,a+12+1); int st=12,sum=0; int ans=-1; while(sum<k&&st>=1) { sum+=a[st--]; } if(sum>=k&&st>=0)ans=12-st; printf("%d\n",ans); } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:codeforces 贪心法
原文地址:http://blog.csdn.net/u014800748/article/details/47158977