首页 > 代码库 > 打气球
打气球
#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;*/ } }
打气球
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。