这个二分查找怎么做?
如图 很急!!! 输出样例呢? 你的题目不完整,样例的部分,需要作参考啊大哥 傻眼貓咪 发表于 2021-10-31 19:05你的题目不完整,样例的部分,需要作参考啊大哥
输入样例:
4 11
8.02
7.43
4.57
5.39
输出样例:
2.00 代码:#include <stdio.h>
#include<stdlib.h>
int sort(const void * elem1, const void * elem2) // 定义函数:用于进行排序
{
int f = *((int*)elem1);
int s = *((int*)elem2);
if (f > s) return1;
if (f < s) return -1;
return 0;
}
int main()
{
int N, K, sum = 0;
double s;
scanf("%d %d", &N, &K);
int a;
for(int i = 1; i <= N; i++)
{
scanf("%lf", &s);
a = s*100;
}
qsort(a, sizeof(a)/sizeof(*a), sizeof(*a), sort); // 排序
int res = 0, r = a/100*100+1;
while(res+1 < r)
{
int mid = (res+r)/2;
for(int i = 1; i <= N; i++) sum += a/mid;
if(sum >= K) res = mid;
else r = mid;
sum = 0;
}
printf("%.2lf", res/100.00);
return 0;
}输入/输出:4 11
8.02
7.43
4.57
5.39
2.00
页:
[1]