SGU130,用k条弦将一个圆分成k+1份的方法数。
#include <iostream>
#include <vector>
#include <
string>
#include <queue>
#include <map>
#include <
string.h>
using namespace std;
long long dp[
35];
long long f(
int k) {
if (dp[k]) {
return dp[k];
}
if (k <=
1) {
return 1;
}
long long ans =
0;
for (
int i =
0; i < k; i++
) {
ans += f(i) * f(k -
1 -
i);
}
return dp[k] =
ans;
}
int main() {
int k;
scanf("%d", &
k);
memset(dp, 0,
sizeof(dp));
printf("%lld %d\n", f(k), k +
1);
}
转载于:https://www.cnblogs.com/litstrong/p/3223812.html
相关资源:数据结构—成绩单生成器