递归求最大和

 #include<stdio.h>
#include<math.h>


int select (int a[], int start,int end,char person)
{
 int left,right;
 if(start==end)
 {
  if(person=='a')
      return a[start];
  else
   return 0;
 }
 else
 {
  left=select(a,start+1,end,'b')+a[start];
  right=select(a,start,end-1,'b')+a[end];
  if(left>right)
  {
   if(person=='a')
    return left;  
   else
    return select(a,start+1,end,'a');
  }
  else
  {
   if(person=='a')
    return right;
   else
    return select(a,start,end-1,'a');
  }

 

 }
}


void main()
{
 int i;
 int a[20]={0},n,sum1,sum2,sum;
 printf("please input n!/n");
 scanf("%d",&n);
 printf("pease input %d no./n",n);
 for(i=0,sum=0;i<n;i++)
 {
  scanf("%d",&a[i]);
  sum+=a[i];
 }
 sum1=select(a,0,n-1,'a');
 sum2=sum-sum1;
 printf("a=%d/n,b=%d/n",sum1,sum2);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值