洛谷P1644跳馬問題

名称无法显示發表於2024-10-14

跳馬問題

題目連結

題目背景

在愛與愁的故事第一彈第三章出來前先練練四道基本的回溯/搜尋題吧……

題目描述

中國象棋半張棋盤如圖 \(1\) 所示。馬自左下角 \((0,0)\) 向右上角 \((m,n)\) 跳。規定只能往右跳,不準往左跳。比如圖 \(1\) 中所示為一種跳行路線,並將路徑總數列印出來。

輸入格式

只有一行:兩個數 \(n\)\(m\)

輸出格式

只有一個數:總方案數 \(total\)

樣例 #1

樣例輸入 #1

4 8

樣例輸出 #1

37

提示

對於 \(100\%\) 的資料:\(n, m\leq 18\)

程式碼:

#include<iostream>
using namespace std;
int n, m,ans;
int g[20][20];
int dx[4] = { 2,1,-1,-2 };
int dy[4] = { 1,2,2,1 };
void dfs(int x, int y) {
	if (x == n && y == m) { ans++; return; }
	for (int i = 0; i < 4; i++) {
		int a = x + dx[i];
		int b = y + dy[i];
		if (a<0 || a>n || b<0 || b>m) continue;
		dfs(a, b);
	}
}
int main()
{
	cin >> n >> m;
	dfs(0, 0);
	cout << ans;
	return 0;
}

相關文章