算法设计-翻杯子
问题描述:
桌上又N个玻璃杯,都是倒置过来的。允许你每次翻转其中的N-1个
玻璃杯。现在找出所有的N值,使得所有的玻璃杯都能朝上,并且
描述一下能使翻转次数最小的算法。
解决思路:
N个杯子,用N个1来代替,因为每一次的N-1个值的翻转,有一个
杯子没有变。每一次翻转,那个不变的值为下一个,如果最后一个
杯子不变的情况下翻转,会全部都是正置的,且次数最少,如果
其中有相同的个数的时候,就是重复,则不能够全部正置。会翻转
回全朝下。
答案:N为偶数,则翻转N次。N为奇数,则不能够全部正置,最大
翻转向上为(N-1)/2;
举例: 4个杯子
起始状态:1 1 1 1
1)1 0 0 0
2)0 0 1 1
3)1 1 1 0
4)0 0 0 0
翻转四次
总结: