poj1154_LETTERS_解题报告

来源:互联网 发布:手机java加密软件 编辑:程序博客网 时间:2024/05/13 23:48

    怒怼了四个小时[摊手]

A了第一个DFS题

考了用DFS求最长路径,

 line 20地方mmax赋值不对导致卡WA了很久




#include <stdio.h>

#include <string.h>
#include <stdlib.h>
#include <iostream>
using namespace std;


int visit[30];
int map[100][100];
int court = 1 , mmax = 0;
int r,c;


void DFS(int a,int b);
int main(void)
{
    char str[100];
    while( cin >> r >> c ){
        getchar();
        memset(visit , 0 , sizeof(visit));
        court=1;
        mmax=1;
        for(int i=1 ; i<=r ; ++i){
            gets(str);
            for(int j=1 ; j<=c ; j++)
                map[i][j] = str[j-1] - 'A' + 1;
        }


        visit[map[1][1]] = 1;
        DFS(1,1);


        cout << mmax << endl;
    }
    return 0;
}


void DFS(int a,int b)
{
    int move[8] = {1,0,-1,0,0,1,0,-1};
    for(int i=0 ; i<8 ; i+=2){
        int m = a+move[i];
        int n = b+move[i+1];


        if(!visit[map[m][n]] && m>=1 && m<=r && n>=1 && n<=c){
            visit[map[m][n]] = 1;
            court++;
            DFS(m,n);
            if(court > mmax)
                mmax = court ;
            court--;
            visit[map[m][n]] = 0;
        }
    }
}
1 0
原创粉丝点击