分治算法,金块问题
#include <stdio.h>int a;
maxmin(int i,int j,int &fmax,int &fmin){
int mid ;
int lmin,lmax,rmin,rmax;
if (i==j){
fmax=a;
fmin=a;
}
else if (i==(j-1)){
if (a<a)
{
fmax=a;
fmin=a;
}
else{
fmax=a;
fmin=a;
}
}
else {
mid=(i+j)/2;
maxmin(i,mid,lmax,lmin);
maxmin(mid+1,j,rmax,rmin);
if ( lmax>rmax) fmax=lmax;
else fmax=rmax;
if ( lmin<rmin) fmin=lmin;
else fmin=rmin;
}
}
int main (){
int n,i,j,max,min;
scanf("%d",&n);
printf ("输入一组金块质量");
for (i=1;i<=n;i++){
scanf("%d",&a);
}
i=1;
maxmin(i,n,max,min);
printf("%d %d",max,min);
return 0;
}
这个代码里面的&fmin和&fmax为什么要用取地址符号哇? +1
这事C++程序,不是C语言程序。C++中,这叫引用。 仰望天上的光 发表于 2015-3-17 19:04
这事C++程序,不是C语言程序。C++中,这叫引用。
我还没接触c++呢,为什么不加引用就不行呢 fatal 发表于 2015-3-18 08:43
我还没接触c++呢,为什么不加引用就不行呢
...没接触的话。。。为什么你认为自己现在就能够看懂这个代码??? 仰望天上的光 发表于 2015-3-18 23:01
...没接触的话。。。为什么你认为自己现在就能够看懂这个代码???
因为是算法课本里的哇。。{:9_239:}确实没学c++。。c语言算法里面的一道题。。 我就是想问,,,同样是int类型的虚参,为啥跟i,j不是一个待遇咧、、
fatal 发表于 2015-3-19 09:48
我就是想问,,,同样是int类型的虚参,为啥跟i,j不是一个待遇咧、、
因为在maxmin(int i,int j,int &fmax,int &fmin)中,参数i,j不需要被改变,而参数fmax和fmin要被改变
页:
[1]