📄 2207.cpp
字号:
#include<stdio.h>
#include<string.h>
char temp[5][5];
char s[200][10];
char mins[10];
char se[10];
int minn;
int n;
int distance(char *s,char *t)
{
memset(temp,0,sizeof(temp));
int i,j,c;
for(i=0;i<5;i++)
for(j=i+1;j<5;j++)
temp[(s[i]-'A')][s[j]-'A']++;
for(i=0;i<5;i++)
for(j=i+1;j<5;j++)
temp[(t[i]-'A')][t[j]-'A']++;
c=0;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(temp[i][j]==1)c++;
c/=2;
return c;
}
int use[10];
void Search(int t)
{
if(t==5)
{
se[5]='\0';
int i;
int c=0;
for(i=1;i<=n;i++)
{
c+=distance(se,s[i]);
}
if(c<minn){strcpy(mins,se);minn=c;}
}
else
{
int i;
for(i=0;i<5;i++)if(use[i]!=1)
{
use[i]=1;
se[t]=char('A'+i);
Search(t+1);
use[i]=0;
}
}
}
int main()
{
int i,j,k;
int c;
while(scanf("%d",&n))
{
if(n==0)break;
minn=100000000;
for(i=1;i<=n;i++)
scanf("%s",s[i]);
memset(use,0,sizeof(use));
Search(0);
printf("%s is the median ranking with value %d.\n",mins,minn);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -