编程之美13资格赛&&14测试赛 A 传话游戏 题目链接:http://programming2013.cstnet.cn/qualification/problem/1
题目分析:存下来比较、替换就行了,需要注意的是,替换表可能会有环,处理方法是找到此单词应当替换的数据,替换后跳出到下一单词。
code:
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,m,n,t,k,p,flag;
char from[50][25],to[50][25],s[50][25],temp[25],c;
scanf("%d",&t);
for(i=1;i<=t;i++)
{
scanf("%d%d",&n,&m);
for(j=0;j<m;j++)
{
scanf("%s%s",from[j],to[j]);
}
scanf("%s%c",s[0],&c);
for(k=1;c!='\n';k++)
{
scanf("%s%c",s[k],&c);
}
n--;
while(n--)
{
for(j=0;j<k;j++)
{
for(flag=p=0;p<m;p++)
{
if(!strcmp(s[j],from[p]))
{
s[j][0]=0,strcpy(s[j],to[p]);
//printf("j==%d,p==%d\n",j,p);
flag=1;
}
if(flag)break;
}
}
}
printf("Case #%d: ",i);
for(j=0;j<k;j++)
{
printf("%s%c",s[j],j==k-1?'\n':' ');
}
}
return 0;
}
PS:也就做个A了……