worm

为什么我的眼里饱含泪水?因为我程序没写完!
随笔 - 5, 文章 - 2, 评论 - 10, 引用 - 0
数据加载中……

poj 1154源代码

        花费了近几个小时才写出了这个简单的递归题目!
         呵呵,还是菜鸟水平啊,
本题需要注意的就是,递归到深处往某一方向走不了的时候,注意num--,且把字母标记清除!
源代码:
 1//============================================================================
 2// Name        : poj.cpp
 3// Author      :
 4// Version     :
 5// Copyright   : Your copyright notice
 6// Description : DFS, Ansi-style
 7//============================================================================
 8#include <iostream>
 9using namespace std;
10int 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};
11char b[21][21];
12int ma = 0;
13int num = 0;
14int r,c;
15void 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}

51int 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

posted on 2009-03-06 08:34 WORM 阅读(343) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理