What happens here is that each hand shake divides the group into 2 distinct groups. The total number of handshakes for this division would then be handshakes for the one group times the handshakes for the other group, by the multiplication principle. To count the number of such divisions, we can choose a person like person 1 to be the pivot. This person can shake hands with person 2, 4, 6, ..., n-2, n. Shaking hands with person k would seperate the group into the groups of size k-2 and n-k. This also equivalent to calling the handshake function with values 0, 2, 4, ..., n-4, n-2. We can derive a recurrence relation from this:
The recursive formula should look something like this:
Resolves: #216
Algorithm:
What happens here is that each hand shake divides the group into 2 distinct groups. The total number of handshakes for this division would then be handshakes for the one group times the handshakes for the other group, by the multiplication principle. To count the number of such divisions, we can choose a person like
person 1
to be the pivot. This person can shake hands with person2, 4, 6, ..., n-2, n
. Shaking hands with person k would seperate the group into the groups of size k-2 and n-k. This also equivalent to calling the handshake function with values0, 2, 4, ..., n-4, n-2
. We can derive a recurrence relation from this:The recursive formula should look something like this:
We can implement this using recursion with memoization as well as dynamic programming.