给定一个数组,可以从数组中取出下标不连续的任意个数,求可以取出的数的和的最大值,例如:给出数组A[]={1,2,2,5,3,4,3}可以取出的最大和为2+5+4=11。现再给定数组{3,9,7,5,1,3,1,2,7},能取出的数的和的最大值是
int a[]={3,9,7,5,1,3,1,2,7};
int b[9]= {0,0,0,0,0,0,0,0,0};
void findmax(int index,int lenth,int currentmax)
{
if(index>=lenth)
{
cout<<currentmax<<endl;
for(int j=0;j<9;++j)
cout<<b[j]<<" ";
cout<<endl;
// currentmax=0;
return;
}
for(int i=0;i<2;++i)
{
if(i==0)
{
currentmax+=a[index];
b[index]=1;
findmax(index+2,lenth,currentmax);
b[index]=0;
currentmax-=a[index];
}
if(i==1)
{
//currentmax+=a[index+1];
findmax(index+1,lenth,currentmax);
}
}
}
int main()
{
int findmax1=0;
findmax(0,9,findmax1);
return 0;
}