按常规方法
#include<stdio.h>
#include<math.h>
int ping(int n)
{
int count = 0;
while (n > 1)
{
count =count + n / 2;
n = n-n / 2;
}
return count;
}
int main()
{
printf("请输入比赛的人数\n");
int a;
scanf_s("%d", &a);
printf("%d", ping(a));
}
但如果反向思考,从淘汰选手入手,一共有n个人,一场比赛只能淘汰1个人,则比赛(n-1)次
#include<stdio.h>
#include<math.h>
int main()
{
printf("请输入比赛的人数\n");
int n;
scanf_s("%d", &n);
printf("%d", n-1);
}
短短几行代码就可以实现,是不是很惊喜!!!
所以生活中很多事我们都需要逆向思考。
塞翁失马,焉知非福呢。