变形课-哈利波特的练习
Harry已经将他所会的所有咒语都列成了一个表,他想让你帮忙计算一下他是否能完成老师的作业,将一个B(ball)变成一个M(Mouse),你知道,如果他自己不能完成的话,他就只好向Hermione请教,并且被迫听一大堆好好学习的道理.
Input
Output
Sample Input
Sample Output
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
typedef struct node
{
char herry[25];
struct node *next;
}*Linklist ,LNode;
typedef struct
{
Linklist front ,rear;
}Queue;
char map[1000][3];
int visit[1000];
void push(Queue *Q,char *str)
{
Linklist p;
p =(Linklist )malloc(sizeof(LNode));
strcpy(p->herry,str);
p->next=NULL;
if(Q->front == NULL)
{
Q->front = p ;
Q->rear = p ;
return ;
}
Q->rear->next=p;
Q->rear=p;
}
int bfs(Queue *Q,int n)
{
while(Q->front != NULL )
{
char x=Q->front->herry[1];
if(x=='m')
return 1;
for(int i=0;i<n&&map[i][0]!='\0';i++)
if(map[i][0]==x&&visit[i]!=1)
{
push(Q,map[i]);
// printf("%s\n",map[i]);
visit[i]=1;
}
Q->front=Q->front->next;
}
return 0;
}
int main()
{
char str[50];
while( scanf("%s" , str ) != EOF)
{
getchar();
int i=0;
while(str[0]!='0')
{
// scanf("%s",str);
// if(str[0]=='0')
// break;
int l=strlen(str);
map[i][0]=str[0];
map[i][1]=str[l-1];
map[i][2]='\0';
i++;
scanf("%s",str);
getchar();
}
Queue *Q;
Q = new Queue;
Q->front=Q->rear=NULL;
memset(visit ,0,sizeof(visit));
for(int j=0;j<i;j++)
if(map[j][0]=='b')
{
push(Q,map[j]);
visit[j]=1;
}
int ans=bfs(Q,i);
if(ans)
printf("Yes.\n");
else
printf("No.\n");
}
return 0;
}

浙公网安备 33010602011771号