poj 1154源代碼
花費了近幾個小時才寫出了這個簡單的遞歸題目!
呵呵,還是菜鳥水平啊,
本題需要注意的就是,遞歸到深處往某一方向走不了的時候,注意num--,且把字母標記清除!
源代碼:
呵呵,還是菜鳥水平啊,
本題需要注意的就是,遞歸到深處往某一方向走不了的時候,注意num--,且把字母標記清除!
源代碼:
1
//============================================================================
2
// Name : poj.cpp
3
// Author :
4
// Version :
5
// Copyright : Your copyright notice
6
// Description : DFS, Ansi-style
7
//============================================================================
8
#include <iostream>
9
using namespace std;
10
int a[26] =
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
11
char b[21][21];
12
int ma = 0;
13
int num = 0;
14
int r,c;
15
void Dfs(int x,int y)
{
16
if (num > ma)
{
17
ma = num;
18
}
19
20
if (x>0 && a[b[x][y]-'A']==0)
{
21
a[b[x][y]-'A']=1;
22
num++;
23
Dfs(x-1,y);
24
a[b[x][y]-'A']=0;
25
num--;
26
}
27
if (x<r-1&&a[b[x][y]-'A']==0)
{
28
a[b[x][y]-'A']=1;
29
num++;
30
Dfs(x+1,y);
31
a[b[x][y]-'A']=0;
32
num--;
33
}
34
if (y>0&&a[b[x][y]-'A']==0)
{
35
a[b[x][y]-'A']=1;
36
num++;
37
Dfs(x,y-1);
38
a[b[x][y]-'A']=0;
39
num--;
40
}
41
if (y<c-1&&a[b[x][y]-'A']==0)
{
42
a[b[x][y]-'A']=1;
43
num++;
44
Dfs(x,y+1);
45
a[b[x][y]-'A']=0;
46
num--;
47
}
48
49
50
}
51
int main()
{
52
cin >> r >> c;
53
for (int i = 0;i < r;++i)
{
54
for (int j = 0; j < c; ++j)
{
55
cin >> b[i][j];
56
}
57
}
58
59
Dfs(0,0);
60
cout << ma <<endl;
61
return 0;
62
}
63

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

56

57

58

59

60

61

62

63
