2013-02-15 3 views
0

저는 강사가 제공 한이 과제로 인해 어려움을 겪고 있습니다. 이 솔루션에 필요한 클래스를 설정하는 파일을 프로그래밍했지만 구현 방법을 모릅니다. 여기에 클래스가 있습니다. 알고리즘을 추가해야합니다.2 차원 배열에서 C++ 경로 찾기

#include "Solver.h" 

int* Solver::findNumPaths(const MazeCollection& mazeCollection) 
{ 
    int *numPaths = new int[mazeCollection.NUM_MAZES]; 


    return numPaths; 
} 

여기에 우리가 제공 한 문제 설명이 있습니다. 아무도 이것을 구현하거나 올바른 궤적에 나를 설정하는 방법을 알고, 감사합니다!

00C, 우리는 다시 귀하의 도움이 필요합니다.

악의적 인 사악한 기안자 인 Russello Kane 박사는 무거운 무장 다람쥐를 날려 버리고 BCB를 공격하고 유쾌하고 아름답고 뛰어난 지적 컴퓨팅 학생들을 모두 물리 쳤습니다.

우리는이 위협에 즉각적으로 대처해야하며 BCB의 로비를 부분적으로 차단할 계획이 있습니다. 총을 쏜 다람쥐는 BCB에 정사각형 [1,1]로 진입하고 [10,10]에 표시된 출구를 향해 돌진합니다.

바리케이드 된 사각형은 모피 설치류에 통과 할 수 없습니다. 중요한 점은 다람쥐의 피눈물은 마치 한쪽 정사각형을 오른쪽으로 움직이거나 한 정사각형을 아래로 움직이는 출구쪽으로 만 움직이게하는 것과 같습니다. 다람쥐는 바리 케 이드가 접근을 막고 있더라도 왼쪽 위나 왼쪽으로 움직이지 않습니다.

우리의 방은 바리케이드 배치가 다람쥐의 움직임을 방해하는 방법을 결정하기 위해 많은 수의 테스트를 실행해야합니다. 각 테스트에서 여러 개의 사각형이 바리케이드로 표시되며 시작부터 종료까지의 여러 경로 (위에서 언급 한 다람쥐 이동 패턴을 준수)의 총 수를 결정해야합니다.

재귀 적 계산 알고리즘에 대해 모호한 것을 우연히 목격 한 사람이 많았지 만, 재귀와 반복 사이의 연결에 관한 내용은 많이 있지만, OOC는 오해의 소지가있는 조언에 정신이 산다는 것을 잘 알고 있습니다.

답변

0

시작 명백한/w : countPaths(0,0)를 호출하여

int count = 0; 

void countPaths(x, y) { 
    if (x==10 && y==10) { 
    count++; 
    return; 
    } 
    if (can-move-right) 
    countPaths(x+1, y); 
    if (can-mopve-down) 
    countPaths(x, y+1); 
} 

시작.

장거리에서 가장 효율적이지는 않지만 제대로 작동합니다. 그런 다음 최적화 할 방법을 찾으십시오 (예를 들어, 목표에 가까운 사각형에서 경로를 다시 계산하게되면 작업이 크게 달라질 수 있습니다).

관련 문제