HDOJ 1181 变形课

题目传送门:
http://acm.hdu.edu.cn/showproblem.php?pid=1181
刚开始这个题目一直没看懂什么意思,趴在桌子上睡了个午觉,起来后,再看,还是迷糊。。。
这个时候,突然间,图书馆外天空放晴,太阳光芒照耀大地,我也顿悟了。
原来harry施展魔法,只需要几个词首位相同才能连接起来,并且整体的首位分别是’b’和’m’

Soga.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
using namespace std;
 
typedef struct Word{
	char begin, end;
	bool vis;
}Word;
 
Word words[100];
int n, flag;
 
void DFS(char ch)
{
	int i;
	if(flag == 1)
		return;
	if(ch == 'm')
	{
		flag = 1;
		return;
	}
	for(i=1; i<n; ++i)
		if(words[i].begin == ch && !words[i].vis)
		{
			words[i].vis = 1;
			DFS(words[i].end);
			words[i].vis = 0;
		}
}
 
int main()
{
	int i;
	char tmp[30];
	while(scanf("%s", tmp) != EOF)
	{
		n = 1;
		while(strcmp(tmp, "0"))
		{
			words[n].begin = tmp[0];
			i = 0;
			while(tmp[i++] != '\0')
				;
			words[n].end = tmp[i-2];
			words[n].vis = 0;
			n++;
			scanf("%s", tmp);
		}
		flag = 0;
		DFS('b');
		printf(flag==1?"Yes.\n":"No.\n");
	}
	return 0;
 
}

话说MiYu喜欢走YD流的,不知道他在哪里看见了这么YD的AC代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream>
using namespace std;
char ss[10];
int main(){
    int flag=1;
    while(gets(ss)){
        if (strcmp(ss,"0")==0){
            if (flag){
                printf("Yes.\n");
                flag=0;
            }
            else
                printf("No.\n");
        }
    }
    return 0;
}

发布者

Tanky Woo

Tanky Woo,[个人主页:https://tankywoo.com] / [新博客:https://blog.tankywoo.com]

《HDOJ 1181 变形课》有3个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注