题目:给定6个数字,1,2,2,3,4,5,打印所有的排列
要求:
- 所有的4均不会出现在排列的第4个位置
- 数字3和数字5不能相邻
- 排列不能重复。
实现思想:
采用回朔的方法便利所有可能的排列,其中把不符合题目要求的去除。需要额外注意的是,数字中出现了两个2,如果单纯的遍历,会打印两次2在某个位置的排列,要注意把这个重复给去除。
问:101个榛子,每个重量都相等。有一天其中一个受到污染了,不知道变重还是变轻了,给一个天平,请问至少要称几次才能确定是变轻了还是变重了?
答案:
- 先取出一个,然后将剩下的等分成两份,没份50个;
- 将两份放到天平,如果重量相等,则说明被选出的那一个是受到污染的,将受到污染的同其他的任意一个比较,就能够得出答案。
- 如果天平不平衡,将重的一边再分成两份,每份25个,放到天平上,如果平衡,则说明受污染的在另外50个中,而另一份比较轻,所以受污染的比较轻。相反,如果不平衡,则说明受污染的在当前的50个中,则说明受污染的变重了。
最新回复评论