练习二 1007 分电线问题

来源:互联网 发布:淘宝店铺买家采集 编辑:程序博客网 时间:2024/04/27 17:05

简单题意:

       有几段知道长度的电线,要将这几段电线分为相同长度的几节,不能进行重新组合拼接。输入想m,n;m为几段电线,n为需要几节。

思路:

        运用二分法的思想,将几段中的电线最长度作为最大值,最小值为零。将单个电线的长度除以mid的整数加和和n做比较,之后用二分法的标准方法做就可以。

代码如下:

#include<iostream>#include<iomanip>using namespace std;int main(){int m,n,i;double k,temp[10000],mid;while(cin>>m>>n&&m!=0||n!=0){double h=0;for(i=0;i<m;i++){cin>>k;temp[i]=k;if(h<k)h=k;}double a=0;double b=h;int F;while(b-a>0.00001){mid=(a+b)/2;F=0;for(i=0;i<m;i++){F+=int(temp[i]/mid);}if(F<n){b=mid;}else{a=mid;}}cout<<fixed<<setprecision(2)<<a<<endl;}return 0;}

感想:

      实际问题实际分析就可,二分法的最大值要具体问题的分析。

ACID:00752708 


1 0
原创粉丝点击