标签:out core max sum pac end count pre int
#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;*/
}
}
标签:out core max sum pac end count pre int
原文地址:http://www.cnblogs.com/452035305qq/p/6438524.html