打气球
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了打气球相关的知识,希望对你有一定的参考价值。
#include<iostream> using namespace std; #define SIZE 20 int data[SIZE]; int used[SIZE]={0}; int ballon[SIZE]; int N; int weizhi[SIZE]; int Maxscore; int socore(int ballon[SIZE],int len,int j){ int sum=0; int k,h; int flag1=0,flag2=0; int pos=j; for(k=pos+1;k<len;k++) { if(weizhi[k]==0) { flag1=1; break; } } for(h=pos-1;h>=0;h--) { if(weizhi[h]==0) { flag2=1; break; } } if(flag1==1&&flag2==1) { sum=sum+data[k]*data[h]; } if(flag1==1&&flag2!=1) { sum=sum+data[k]; } if(flag2==1&&flag1!=1) { sum=sum+data[h]; } if(flag2!=1&&flag1!=1) { sum=sum+data[pos]; } return sum; } void Allpailie(int step,int len,int scores) { if(step==len) { if(scores>Maxscore){ Maxscore=scores; } return; } for(int i=0;i<len;i++) { if(!used[i]) { ballon[step]=i; used[i]=1; weizhi[i]=1; int tt=socore(ballon,len,i); Allpailie(step+1,len,scores+tt); weizhi[i]=0; used[i]=0; } } } void main(){ freopen("a.txt","r",stdin); int nCase; cin>>nCase; for(int tc=0;tc<nCase;tc++) { cin>>N; for(int i=0;i<N;i++) { cin>>data[i]; } //count=0; for(int i=0;i<SIZE;i++){ used[i]=weizhi[i]=0; } Maxscore=0; Allpailie(0,N,0); cout<<Maxscore<<endl; //cout<<count; /*cout<<N<<endl; for(int j=0;j<N;j++) { cout<<data[j]<<" "; } cout<<endl;*/ } }
以上是关于打气球的主要内容,如果未能解决你的问题,请参考以下文章