标题:分治法求最大值最小值
只看楼主
林888
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-3-30
结帖率:100%
已结贴  问题点数:20 回复次数:3 
分治法求最大值最小值
void rec_maxmin(int a[],int i, int j, int amax, int amin)
{
if(i==j){
   amax = a[i];
   amin = a[i];
}
if(i==j-1)
{
   amax = cmax(a[i],a[j]);
   amin = cmin(a[i],a[j]);
}else{
   int mid = (i+j)/2;
   rec_maxmin(a,i,mid,lmax,lmin);
   rec_maxmin(a,mid+1,j,rmax,rmin);
   amax = cmax(lmax,rmax);
   amin = cmin(lmin,rmin);
}
请问一下这个递归过程是怎么实现的
搜索更多相关主题的帖子: void 最大值 
2013-03-31 16:56
helloUJS
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:168
专家分:731
注 册:2013-3-27
得分:20 
回复 楼主 林888
#include <stdio.h>  
void rec_maxmin(int a[],int i, int j, int *amax, int *amin)
{
 int rmax,rmin,lmax,lmin,mid;
 if(i==j)
  {
   *amax = a[i];
   *amin = a[i];
  }
  else if(i==j-1)
        {
         *amax = a[i]>a[j]?a[i]:a[j];
         *amin = a[i]<a[j]?a[i]:a[j];
       }
       else
       {
          mid = (i+j)/2;
          rec_maxmin(a,i,mid,&lmax,&lmin);
          rec_maxmin(a,mid+1,j,&rmax,&rmin);
          *amax = lmax>rmax?lmax:rmax;
          *amin = lmin<rmin?lmin:rmin;
       }
}
int main()
{  int a[10]={8,23,5,76,2,13,46,56,32,19},max,min;
   rec_maxmin(a,0,9,&max,&min);
   printf("max=%d,min=%d\n",max,min);
 }
根据你的程序修改而成
2013-03-31 21:09
林888
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-3-30
得分:0 
回复 2楼 helloUJS
谢谢啊,我再研究研究,我是新手,希望各位前辈予以指教,也希望能通过此论坛提高自己对编程的信心
2013-04-03 19:58
dishitian
Rank: 1
等 级:禁止发言
帖 子:9
专家分:4
注 册:2013-4-3
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2013-04-03 20:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-402509-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042141 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved