输入:
5 4
3
2 2
2 3
4 2
输出:
5
注意点:这题目输入的时候先输入列,再输入行,这点要注意,然后这个图跟我们二维数组是反过来的,所以题目说得向北走要变成向南走,注意一下细节就好了。
代码如下:
#include <iostream>
using namespace std;
const int N = 20;int dx[] = {0, 1};
bool vis[N][N];
int mp[N][N];int dy[] = {1, 0};
int ans;
int n, m;void dfs(int x, int y) {if (x == n && y == m) {ans++;return ;}for (int i = 0; i < 2; i++) {int xx = x + dx[i], yy = y + dy[i];if (xx < 1 || xx > n || yy < 1 || yy > m || vis[xx][yy] || mp[xx][yy] == -1)continue;vis[xx][yy] = true;dfs(xx, yy);vis[xx][yy] = false;}
}int main() {cin >> m >> n;//n为行,m为列int cnt;cin >> cnt;while (cnt--) {int a, b;cin >> a >> b;//a为列,b为行mp[b][a] = -1;//障碍物标记为-1}dfs(1, 1);cout << ans << endl;return 0;
}