老同学聚餐共有101人,饭后到别时两两相互握手,以示敬意,要求每两个人之间都要互相握一次,而且只能握一次,(既不能能握重,也不能握漏)问他们之间一共要握多少次手?
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define N 101
int main(void)
{
int num = 0;
for(int i=1;i<=N;i++){
for(int j=i+1;j<=N;j++){
printf("%d\t%d\n", i, j);
num++;
}
}
printf("there are %d times of handshaking\n", num);
return 0;
}
这不是典型的组合问题吗,C101,2=101x100/2
换一种思路,第一个要和100个人握手,第二个握99个人,第三个握98个人,以此类推,第101个握0个人
第一个和其他100个捂手
第一个和其他99个捂手
……
循环到最后