#include<iostream>
using namespace std;
int main()
{
int n, k, len[10000], i, left, right, mid, num;
cout << "请输入原木的数目N和需要得到的小段的数目K : " << endl;
cin >> n >> k;
right = 0;
cout << "请输入各段原木的长度: " << endl;
for (i = 0; i < n; i++)
{
cin >> len[i];
if (right < len[i]) right = len[i];
}
right++;
left = 0;
while (left + 1 < right)
{
mid = (left + right) / 2;
num = 0;
for (i = 0; i < n; i++)
{
if (num >= k)
break;
num = num + len[i] / mid;
}
if (num >= k)
left = mid;
else
right = mid;
}
cout << "能够切割得到的小段的最大长度为" << left << endl;
return 0;
}木材加工
最新推荐文章于 2023-03-27 22:30:03 发布
本文介绍了一个通过二分查找算法解决原木切割问题的C++程序实现。该程序接收用户输入的原木数量和目标小段数量,以及每根原木的长度,最终输出能获得指定数量小段的最大长度。
373

被折叠的 条评论
为什么被折叠?



