하자 T (X, Y)가 × X를 통해 투어의 숫자 생각 Y 그리드하도록 : 투어는 C++ 간단하지만 해결할 수 없습니까? 난 안
- 위로, 아래로, 왼쪽으로 또는 오른쪽으로 사각형
- 투어는 각 사각형을 정확히 한 번 방문합니다.
- 둘러보기는 왼쪽 하단 정사각형으로 끝납니다.
예를 들어 T (2,2) = 1, T (3,3) = 2, T (4,3) = 0 및 T (3,4) = 4. T (10,4)을 계산하는 프로그램을 작성하십시오.
나는 몇 시간 동안이 작업을 해왔다 ... 그리드의 크기를 입력으로 받아들이고 가능한 둘러보기의 수를 반환하는 프로그램이 필요합니까?
나는 몇 시간 동안이 작업을 해왔다 ... 그리드의 크기를 입력으로 받아들이고 가능한 둘러보기의 수를 반환하는 프로그램이 필요합니까?
이 문제를 해결하기 위해이 코드를 작성했습니다 ... 모든 방향을 검사하는 방법을 찾는 것 같습니다.
#include <iostream>
int grid[3][3];
int c = 0;
int main(){
solve (0, 0, 9);
}
int solve (int posx, int posy, steps_left){
if (grid[posx][posy] = 1){
return 0;
}
if (steps_left = 1 && posx = 0 && posy = 2){
c = c+1;
return 0;
}
grid[posx][posy] = 1;
// for all possible directions
{
solve (posx_next, posy_next, steps_left-1)
}
grid[posx][posy] = 0;
}
이 알고리즘은 @KarolyHorvath 에 의해 당신은 그리드 (/ 방문 방문하지)에 세포의 상태를 표현하기 위해 몇 가지 데이터 구조가 필요합니다.
알고리즘 :
step(posx, posy, steps_left)
if it is not a valid position, or already visited
return
if it's the last step and you are at the target cell
you've found a solution, increment counter
return
mark cell as visited
for each possible direction:
step(posx_next, posy_next, steps_left-1)
mark cell as not visited
및 단계를 실행 (0, 0, SIZEX * SIZEY)는 알고리즘을받은 적이 있기 때문에 그것은, 어렵지 않다
숙제로 표시해야합니다. –
알고리즘 @KarolyHorvath 작성 그리드의 셀 상태 (방문/방문하지 않음)를 나타 내기 위해 데이터 구조가 필요합니다. 알고리즘 : 단계 (POSX, 꽃다발, steps_left) 유효한 위치가 아닌 경우, 또는 마지막 단계의 경우 이미 반환 를 방문 할 때 당신이 해결책을 발견했습니다 대상 셀에있다, 방문 가능한 각 방향 같은 증분 카운터 복귀 표시 셀 : 단계 (posx_next, posy_next, steps_left-1) 을 방문 단계 (0, 0, SIZEX * SIZEY) – user1277552
인가 실행하지 표시 셀 이 숙제? –