三人年龄
三个神秘蒙面人来访F博士。
博士询问他们年龄时,他们说:我们中年龄最小的不超过19岁。我们3人年龄总和为70岁。且我们三人年龄的乘积是所有可能情况中最大的。
请帮助F博士计算他们的年龄,从小到大排列,用逗号分开。
参考答案:
19,25,26
#include <stdio.h>
#include <stdlib.h>
int min(int x,int y,int z)
{
int mi;
if(x<y)
{
if(x<z)
{
mi=x;
}
else
{
mi=z;
}
}
else
{
if(y<z)
{
mi=z;
}
else
{
mi=y;
}
}
return mi;
}
int main()
{
int x,y,z,min1,m,maxhe=0;
int px,py,pz,pri[3],i,j;
for(x=1; x<70; x++)
{
for(y=1; y<70; y++)
{
for(z=1; z<70; z++)
{
min1=min(x,y,z);
if(min1>19)
continue;
if(x+y+z==70)
{
m=x*y*z;
if(m>=maxhe)
{
maxhe=m;
//printf("%d:%d %d %d\n",maxhe,x,y,z);
px=x;
py=y;
pz=z;
}
}
}
}
}
pri[0]=px;
pri[1]=py;
pri[2]=pz;
for(i=0;i<3-1;i++)//一共比较n-1轮
{
for(j=0;j<3-1-i;j++)//每轮比较n-1-i次
{
int num;
if(pri[j]>pri[j+1])
{
num=pri[j];
pri[j]=pri[j+1];
pri[j+1]=num;
}
}
}
for(i=0;i<3;i++)
{
printf("%d ",pri[i]);
}
return 0;
}