不用动脑的方法 是遍历 一下:
#include <stdio.h>
int max4(int a, int b, int c, int d){
int i,j;
int x[4],tmp;
x[0]=a;x[1]=b;x[2]=c;x[3]=d;
for (i=0;i<3;i++)
for (j=i+1;j<4;j++)
if (x[j]>x[i]){tmp=x[i];x[i]=x[j];x[j]=tmp;}
return x[0];
}
int main(){
int a[]={4,8,7,15};
int b[]={7,9,17,14};
int c[]={6,9,12,8};
int d[]={6,7,14,6};
int i,j,k,m;
int R,r;
int i0=0,j0=1,k0=2,m0=3;
R = max4(a[i0],b[j0],c[k0],d[m0]);
for (i=0;i<4;i++){
for (j=0;j<4;j++){
for (k=0;k<4;k++){
for (m=0;m<4;m++){
if (i!=j && i!=k && i!=m && j!=k && j!=m && k!=m){
r = max4(a[i],b[j],c[k],d[m]);
if (r < R) { R=r; i0=i;j0=j;k0=k;m0=m;};
};
};};};};
printf("a[%d],b[%d],c[%d],d[%d],T=%d\n",i0,j0,k0,m0,R);
return 0;
}
输出:a[2],b[0],c[3],d[1],T=8
#include <stdio.h>
int max4(int a, int b, int c, int d){
int i,j;
int x[4],tmp;
x[0]=a;x[1]=b;x[2]=c;x[3]=d;
for (i=0;i<3;i++)
for (j=i+1;j<4;j++)
if (x[j]>x[i]){tmp=x[i];x[i]=x[j];x[j]=tmp;}
return x[0];
}
int main(){
int a[]={4,8,7,15};
int b[]={7,9,17,14};
int c[]={6,9,12,8};
int d[]={6,7,14,6};
int i,j,k,m;
int R,r;
int i0=0,j0=1,k0=2,m0=3;
R = max4(a[i0],b[j0],c[k0],d[m0]);
for (i=0;i<4;i++){
for (j=0;j<4;j++){
for (k=0;k<4;k++){
for (m=0;m<4;m++){
if (i!=j && i!=k && i!=m && j!=k && j!=m && k!=m){
r = max4(a[i],b[j],c[k],d[m]);
if (r < R) { R=r; i0=i;j0=j;k0=k;m0=m;};
};
};};};};
printf("a[%d],b[%d],c[%d],d[%d],T=%d\n",i0,j0,k0,m0,R);
return 0;
}
输出:a[2],b[0],c[3],d[1],T=8