qiqiu

#include <stdio.h>

int num[5];

int visit[5];

int n,min,k;

 

void dfs(int step , int sum)

{

    if(step==n)

    {

        if(sum>min)

            min=sum;

        return ;

    }

    for(int i=0;i<n;i++)

    {

        int iz,iy,flagz,flagy;

        if(!visit[i])

        {

                visit[i]=1;

                iz=i-1;

                while(1)

                {

                    if(iz<0)

                    {

                        flagz=0;

                        break;

                    }

                    if(!visit[iz])

                    {

                        flagz=1;

                        break;

                    }

                    if(visit[iz])

                        iz=iz-1;

                }

 

                iy=i+1;

                while(1)

                {

                    if(iy==n)

                    {

                        flagy=0;

                        break;

                    }

                    if(!visit[iy])

                    {

                        flagy=1;

                        break;

                    }

                    if(visit[iy])

                        iy=iy+1;

                }

                 

                if(flagz&&flagy)

                {

                    dfs(step+1,sum+num[iz]*num[iy]);

                    visit[i]=0;

                }

                if(!flagz&&flagy)

                {

                    dfs(step+1,sum+num[iy]);

                    visit[i]=0;

                }

                if(flagz&&!flagy)

                {

                    dfs(step+1,sum+num[iz]);

                    visit[i]=0;

                }

                if(!flagz&&!flagy)

                {

                    dfs(step+1,sum+num[i]);

                    visit[i]=0;

                }

                 

            }

    }

}

int main()

{

    freopen("in.txt","r",stdin);

    scanf("%d",&n);

    for(int i=0;i<n;i++)

        scanf("%d",&num[i]);

    min=-1;

    k=n;

    dfs(0,0);

    printf("%d",min);

    return 0;

}

 

posted on 2017-02-27 11:11  霸王程  阅读(148)  评论(0编辑  收藏  举报