最简单的方法就是用循环来写 x y z分别循环然后判断哪组符合约束条件取值最大
#include
int main()
{
double x,y,z,max,sum;
max=sum=0.0;
for(x=0.1;x<=0.9;x=x+0.1)
for(y=0.1;y<=0.9;y=y+0.1)
for(z=0.1;z<=0.9;z=z+0.1)
{sum=x*0.2+y*0.5+z*0.6;
if(max<=sum)
max=sum;
}
printf("%lf\n",max);
}
至于那个四个数和等于1的那个 就是在判断是否最大的时候加一个约束条件 就是x+y+z+k是否等于一 等于就将值给max
我也是新手 只能用这种笨方法了 还有就是用数学只是 就是动态规划 这个我不太会...
我想你问的是x*0.2+y*0.5+z*0.6等于1,而不是最大值:
程序如下
#include
#include
#include
int main(int argc, char**argv)
{
float x,y,z;
for(x=0.1f;x<1;x+=0.1f)
for(y=0.1f;y<1;y+=0.1f)
for(z=0.1f;z<1;z+=0.1f)
if((x*0.2+y*0.5+z*0.6)==1.0f)
printf("%f,%f,%f",&x,&y,&z);
return 0;
}
#include
double sum(double ,double,double);
int main()
{ double x,y,z,max=0,sum1,sum2;
for(x=0.1;x<=0.9;x=x+0.1)
for(y=0.1;y<=0.9;y=y+0.1)
for(z=0.1;z<=0.9;z=z+0.1)
{
sum1=sum(x,y,z);
if(sum1==1)
{
sum2=0.2*x+0.5*y+0.6*z;
if(max
}
printf("%f\n",max);
}
double sum(double a ,double b,double c)
{
double i;
i=a+b+c;
return i;
}
我想你问的是x*0.2+y*0.5+z*0.6等于1,而不是最大值