http://www.lydsy.com/JudgeOnline/problem.php?id=1037
#include <cstdio>
#include <iostream>
#include <cstring>
#define maxn 160
using namespace std;
long long n,m,k,dp[maxn][maxn][25][25],ans;
//i个男的j个女的, 男的比女的多k1个, 女的比男的多k2个
void init(){
scanf("%d%d%d",&n,&m,&k);
dp[0][0][0][0] = 1;
}
void sov(){
for(int i = 0; i<=n; i++) {
for(int j = 0; j<=m; j++) {
for(int k1 = 0; k1<=k; k1++) {
for(int k2 = 0; k2<=k; k2++) {
if(i<n&&k1<k) { //加入男生
dp[i+1][j][k1+1][max(k2-1, 0)] += dp[i][j][k1][k2];
}
if(j<m&&k2<k) { //加入女生
dp[i][j+1][max(k1-1,0)][k2+1] += dp[i][j][k1][k2];
}
}
}
}
}
int ans = 0;
for(int i = 0; i<=k; i++) {
for(int j = 0; j<=k; j++) {
ans = (ans+dp[n][m][i][j])%12345678 ;
}
}
cout<<ans<<endl;
}
int main(){
init();
sov();
}