本文主要是介绍几何题-求圆柱最大体积,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
点击打开链接
总是把问题看的太复杂,还以为是三分查找。这题根本没这个必要。
只要使圆周刚好与边相等就行了,矩形中最大的圆就是取最小边作为直径就行了。再分别以两边为高,比较就行了。水啊!
代码:
#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;
const double pi=acos(-1.0);
int main()
{ double r,r2,w,h,v1,v2;while(scanf("%lf%lf",&w,&h),w||h){r=min(h/(2*pi+2),w/2); //选取最小边。v1=pi*r*r*w;r2=w/(pi*2);v2=pi*r2*r2*(h-2*r2);printf("%.3lf\n",max(v1,v2));}return 0;
}//下面就没必要了。
//int sign(double x)
//{ // return x < -eps ? -1 : x > eps;
//}
/*
double search()
{double L=0,R=x,dl,dr,vr=0,vr1=0,vl=0,vl1=0,Max;while(sign(R-L)>=0){double midr=(L+R)/2;double midl=(L+midr)/2;dr=min(midr,b);dl=min(midl,b);if(sign(a-dr*(2*pi+1))>=0) vr=pi*dr*dr*b;if(sign(b-2*pi*dr)>=0) vr1=pi*dr*dr*a;double sum1=max(vr,vr1);if(sign(a-dl*(2*pi+1))>=0) vl=pi*dl*dl*b;if(sign(b-2*pi*dl)>=0) vl1=pi*dl*dl*a;double sum2=max(vl,vl1);if(sign(sum1-sum2)>0){L=midr+eps;Max=sum1;printf("%0.lf ",Max);}else{R=midl-eps;Max=sum2;}}printf("%.3lf",L);return Max;
}*/
这篇关于几何题-求圆柱最大体积的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!