打印经过限定后的数字排列

On October 18, 2010, in 算法, 笔试面试, by sponge

题目:给定6个数字,1,2,2,3,4,5,打印所有的排列

要求:

  1. 所有的4均不会出现在排列的第4个位置
  2. 数字3和数字5不能相邻
  3. 排列不能重复。

实现思想:

采用回朔的方法便利所有可能的排列,其中把不符合题目要求的去除。需要额外注意的是,数字中出现了两个2,如果单纯的遍历,会打印两次2在某个位置的排列,要注意把这个重复给去除。

Tagged with:
 

问:101个榛子,每个重量都相等。有一天其中一个受到污染了,不知道变重还是变轻了,给一个天平,请问至少要称几次才能确定是变轻了还是变重了?
答案:

  1. 先取出一个,然后将剩下的等分成两份,没份50个;
  2. 将两份放到天平,如果重量相等,则说明被选出的那一个是受到污染的,将受到污染的同其他的任意一个比较,就能够得出答案。
  3. 如果天平不平衡,将重的一边再分成两份,每份25个,放到天平上,如果平衡,则说明受污染的在另外50个中,而另一份比较轻,所以受污染的比较轻。相反,如果不平衡,则说明受污染的在当前的50个中,则说明受污染的变重了。
Tagged with: