标签:public alt 图片 long nat HERE img sse +=
You are given an even number of people num_people
that stand around a circle and each person shakes hands with someone else, so that there are num_people / 2
handshakes total.
Return the number of ways these handshakes could occur such that none of the handshakes cross.
Since this number could be very big, return the answer mod 10^9 + 7
Example 1:
Input: num_people = 2
Output: 1
Example 2:
Input: num_people = 4
Output: 2
Explanation: There are two ways to do it, the first way is [(1,2),(3,4)] and the second one is [(2,3),(4,1)].
Example 3:
Input: num_people = 6
Output: 5
Example 4:
Input: num_people = 8
Output: 14
Constraints:
2 <= num_people <= 1000
num_people % 2 == 0
n(偶数)个人围成个圈,两两握手,要求不能交叉握手。求可能的握手方案个数(mod 10^9 + 7)
public int numberOfWays(int num_people) {
int mod = (int) 1e9 + 7;
int len = num_people / 2;
long[] results = new long[len + 1];
results[0] = 1;
results[1] = 1;
long result;
for (int i = 2; i <= len; i++) {
result = 0;
for (int j = 1; j <= i; j++) {
result += (results[j - 1] * results[i - j]) % mod;
result %= mod;
}
results[i] = result;
}
return (int) results[len];
}
LeetCode 1259. Handshakes That Don't Cross
标签:public alt 图片 long nat HERE img sse +=
原文地址:https://www.cnblogs.com/onePunchCoder/p/11875773.html