11

#include<stdio.h>
char jiyin[5][4]={    'C','C','G','C',
                    'G','C','A','G',
                    'G','A','T','C',
                    'A','T','C','G',
                    'T','C','G','G'};
int zuiduan[5][5];
int max=0;
int vist[5];
int N=20;
void yuchuli()
{
    for(int i=0;i<5;i++)
    {
        for(int j=0;j<5;j++)
        {
            
            if(i!=j)
            {
                for(int a=0;a<4;a++)
                {
                    int flag=0;
                    for(int b=0;a+b<4;b++)
                    {
                        if(jiyin[i][a+b]!=jiyin[j][b])
                        {
                            flag=1;
                            break;
                        }
                    }
                    if(flag==0)
                    {
                        zuiduan[i][j]=4-a;
                    }
                }
            }
        }
    }
}
void ronghe(int step,int sum,int ge)
{
    
    if(step==4)
    {
        if(sum>max)
            max=sum;
        return;
    }
    
    for(int i=0;i<5;i++)
    {
        
        if(vist[i]==0)
        {
            vist[i]=1;
            ronghe(step+1,sum+zuiduan[ge][i],i);
            vist[i]=0;
        }
    }
    
}
int main()
{
    
    yuchuli();
    ronghe(-1,0,-1);
    printf("%d",20-max);
    return 0;
}

 

posted on 2017-01-24 16:37  霸王程  阅读(129)  评论(0编辑  收藏  举报