标签:
5 3
3 2 1
5 2
2 1
2 impossible
简单的贪心哦,不要多说把。题目就是说用木头来修墙,求用的最少数量,记住木头还可以距断的。
所以只有当所有木头的总SIZE和小于墙时才是impossible,其他就从大到小求和,直到Len>=墙就
OK了。
1 #include <iostream> 2 using namespace std; 3 int cmp(const void *a, const void *b) 4 { 5 return *((int *)b) - *((int *)a); 6 } 7 int main() 8 { 9 int L, N, i; 10 int a[601], sum, len; 11 while(cin >> L >> N) 12 { 13 for(i = 0; i < N; i++) 14 cin >> a[i]; 15 16 qsort(a, N, sizeof(a[0]), cmp); 17 sum = len = 0; 18 for(i = 0; i < N; i++) 19 if(len < L) 20 { 21 len += a[i]; 22 sum++; 23 } 24 else 25 break; 26 if(len < L) 27 cout << "impossible" << endl; 28 else 29 cout << sum << endl; 30 } 31 return 0; 32 }
标签:
原文地址:http://www.cnblogs.com/to-creat/p/4934118.html