蜘蛛牌
题目:http://acm.hdu.题目中文。
总是Wrong Answer 不知道什么原因
CODE:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int min;
int visit[10];
void dfs(int number[],int cur,int step)
{
int i;
if(step>=min)
return ;
if(cur==9)
{
min=step;
return ;
}
for(i=0;i<10;i++)
{
if(visit[i]==0)
{
visit[i]=1;
if(visit[i+1]==0)
dfs(number,cur+1,step+abs(number[i+1]-number[i]));
visit[i]=0;
}
}
return ;
}
int main()
{
int i,t;
int temp;
int number[10];
scanf("%d",&t);
while(t>=1)
{
min=999999;
//for(i=0;i<10;i++)
//scanf("%d",&number[i]);
memset(visit,0,sizeof(visit));
memset(number,0,sizeof(number));
for(i=0;i<10;i++)
{
scanf("%d",&temp);
number[temp-1]=i+1;
}
dfs(number,0,0);
printf("%d\n",min);
t--;
}
//system("pause");
return 0;
}