fatal 发表于 2015-3-17 17:50:34

分治算法,金块问题

#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为什么要用取地址符号哇?

fatal 发表于 2015-3-17 17:58:10

+1

仰望天上的光 发表于 2015-3-17 19:04:28

这事C++程序,不是C语言程序。C++中,这叫引用。

fatal 发表于 2015-3-18 08:43:55

仰望天上的光 发表于 2015-3-17 19:04
这事C++程序,不是C语言程序。C++中,这叫引用。

我还没接触c++呢,为什么不加引用就不行呢

仰望天上的光 发表于 2015-3-18 23:01:42

fatal 发表于 2015-3-18 08:43
我还没接触c++呢,为什么不加引用就不行呢

...没接触的话。。。为什么你认为自己现在就能够看懂这个代码???

fatal 发表于 2015-3-19 09:45:42

仰望天上的光 发表于 2015-3-18 23:01
...没接触的话。。。为什么你认为自己现在就能够看懂这个代码???

因为是算法课本里的哇。。{:9_239:}确实没学c++。。c语言算法里面的一道题。。

fatal 发表于 2015-3-19 09:48:30

我就是想问,,,同样是int类型的虚参,为啥跟i,j不是一个待遇咧、、

仰望天上的光 发表于 2015-3-19 19:27:34

fatal 发表于 2015-3-19 09:48
我就是想问,,,同样是int类型的虚参,为啥跟i,j不是一个待遇咧、、

因为在maxmin(int i,int j,int &fmax,int &fmin)中,参数i,j不需要被改变,而参数fmax和fmin要被改变
页: [1]
查看完整版本: 分治算法,金块问题