题意就是在方格中走到指定点的方案数,
样例
数据范围
1≤n,m≤30
输入样例1:
3 4
输出样例1:
2
输入样例2:
6 6
输出样例2:
0
算法1
组合数学O(n+m)
主要题意处理:
当行列同时为偶数时此方格不能经过,意思就是每次走两格,目的地不能达到的方案数为0;
公式为:C(min(n/2-1,m/2-1),n+m-2-n/2-m/2)
C++ 代码
#include <bits/stdc++.h>
using namespace std;
int main (){
int n,m;
cin >> n >> m;
if(!(n%2 || m%2)){
cout << 0<<endl;
return 0;
}
n = n - n/2 - 1;
m = m - m/2 - 1;
long long t1 = 1;
long long t2 = 1;
for(int i = 0; i < min (n,m); i++){
t1 *= (n+m-i);
}
for(int i = 1; i <= min(n,m); i++){
t2 *= i;
}
cout << t1/t2<<endl;
return 0;
}
我也是这样做的,看到有人发了我就不发了doge
主要是没看到有这种做法的题解,其实DP也蛮不错的