Lang:G++
Edit12345678910111213141516171819202122232425262728#include<iostream>using namespace std;static int n, k;int dfs(int i,bool up, int s,int l,int r){if (s > k)return 0;if (i == 2 * n)if (up)return 1;elsereturn 0;if (!up && s + r < k)return 0;int sum = 0;if (l>0)sum += dfs(i + 1, s - 1 == k ? true : up, s - 1, l - 1, r);if (r > 0)sum += dfs(i + 1, s + 1 == k ? true : up, s + 1, l, r - 1);return sum;}int main(){while (cin >> n >> k){cout << dfs(0, false, 0, n, n)<<endl;}}