1070. 结绳(25)
原题: https://www.patest.cn/contests/pat-b-practise/1070
思路: 这题就是玩文字游戏, 本来我站在正常人的思维上思考, 心说弄个最长的绳子,
那就是找出最长的两个绳子之和, 再除以2就OK.
而且题目说"原来两段绳子的长度就会减半", 这句话怎么理解, 如果理解成15/2 + 15/2
那正好是测试输出给的答案, 但事实根据正确答案, 这句话必须理解成(15+15) / 2
我知道你可能不知道我说的啥, 最关键的就是绳子必须用完!!!
实现:
#include <stdio.h>
#include <stdlib.h>
// 绳子必须用完!!! 绳子必须用完!!! 绳子必须用完!!!
#define LEN 10010
int compare (const void *a, const void *b);
int main (void) {
int n;
int length[LEN];
int sum;
int i;
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &length[i]);
}
qsort(length, n, sizeof(int), compare);
sum = length[0];
for (i = 1; i < n; i++) {
sum = (sum + length[i]) / 2;
}
printf("%d", sum);
return 0;
}
int compare (const void *a, const void *b) {
return *(int*)a - *(int*)b;
}
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步