常用算法题锦——DFS
Posted rookie161
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用算法题锦——DFS相关的知识,希望对你有一定的参考价值。
#include <bits/stdc++.h> using namespace std; int n, m, a, b; int st[20][20]; int ans = 0; void dfs(int x, int y, int a, int b) { if (a < 0) return; if (b < 0) return; if (y == m + 1) return dfs(x + 1, 1, a, b); if (x == n && y == m) { return (void)ans ++; } if (st[x][y]) return dfs(x, y + 1, a, b); if (y < m && !st[x][y + 1] && a > 0) { st[x][y] = st[x][y + 1] = true; dfs(x, y + 1, a - 1, b); st[x][y] = st[x][y + 1] = false; } if (x < n && !st[x + 1][y] && a > 0) { st[x][y] = st[x + 1][y] = true; dfs(x, y + 1, a - 1, b); st[x][y] = st[x + 1][y] = false; } if (b > 0) dfs(x, y + 1, a, b - 1); } int main() { cin >> n >> m >> a >> b; dfs(1, 1, a, b); cout << ans << endl; return 0; }
以上是关于常用算法题锦——DFS的主要内容,如果未能解决你的问题,请参考以下文章