蓝桥杯 C语言最少砝码
时间: 2023-09-24 17:03:18 浏览: 88
对于蓝桥杯 C语言最少砝码问题,我们可以采用贪心算法进行求解。
首先,我们可以将砝码按照重量从大到小排序,然后按照以下策略进行选择:
1. 选择重量最大的砝码,放入天平的左侧,并将其重量从目标重量中减去;
2. 如果目标重量仍然大于0,则继续选择当前能够凑出的最大重量的砝码,放入天平的左侧,并将其重量从目标重量中减去;
3. 如果目标重量已经等于0,则停止选择砝码。
如果按照上述策略进行选择,最终能够凑出目标重量的最少砝码数量即为答案。
具体实现可以参考以下代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_N 100
int weights[MAX_N];
int cmp(const void* a, const void* b) {
return *(int*)b - *(int*)a;
}
int main() {
int n, target;
scanf("%d%d", &n, &target);
for (int i = 0; i < n; i++) {
scanf("%d", &weights[i]);
}
qsort(weights, n, sizeof(int), cmp);
int ans = 0, sum = 0;
for (int i = 0; i < n; i++) {
if (sum >= target) {
break;
}
sum += weights[i];
ans++;
}
printf("%d\n", ans);
return 0;
}
```
在上述代码中,我们首先读入砝码数量和目标重量,然后按照重量从大到小排序。接着,我们按照上述策略进行选择,并统计选择的砝码数量。最后输出答案即可。
阅读全文