pta修理牧场c语言
时间: 2023-11-07 14:56:44 浏览: 280
code_pta_修理牧场pta_actbdo_
pta修理牧场的问题是农夫要将一段长度为N的木头锯成N块的最小花费。农夫购买了一条很长的木头,长度为L[i]的总和。他没有锯子,而锯木的酬金与所锯木头的长度成正比。为了计算最少花费,我们可以使用排序算法对木头长度进行排序,然后每次选取最小的两个木头进行锯木,将结果加入数组,并将原长度为两个木头之和的木头删除。重复以上操作,直到数组中只剩下一个数。最终的结果是每次锯木得到的结果的累加值。
下面是使用C语言编写的程序来计算pta修理牧场的最小花费:
```c
#include <stdio.h>
#include <stdbool.h>
void sort(int a[], int n) {
int i, j, temp;
for (i = 0; i < n-1; i++) {
for (j = i+1; j < n; j++) {
if (a[i] > a[j]) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
int main() {
int a[10001];
int n, i, sum = 0, temp = 0;
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
if (n == 1) {
printf("%d\n", 0);
} else if (n == 2) {
printf("%d\n", a[0] * a[1]);
} else {
while (true) {
sort(a, n);
if (a[n-2] == 0) {
break;
}
for (i = 0; i < n; i++) {
if (a[i] != 0) {
temp = a[i] * a[i+1];
a[i] = 0;
a[i+1] = temp;
sum += temp;
break;
}
}
}
printf("%d\n", sum);
}
return 0;
}
```
阅读全文