给定一个数组,可以从数组中取出下标不连续的任意个数,求可以取出的数的和的最大值,例如:给出数组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; }