面试 智力题 概率题 游戏题
2013-09-26 21:14
435 查看
史密斯夫妇握手问题
题目:史密斯夫妇邀请另外四对夫妇就餐,已知他们每个人都不和自己握手、不和自己的配偶握手、且不和同一个人握手一次以上。在大家见面握手寒暄后,史密斯问大家握手了几次,每个人的答案都不一样。问:史密斯太太握手几次
解答:
1. 总共10个人,每个人不与自己握手,不与配偶握手,不与同一个人握超过一次手,所以每个人最多握8次手,最少0次;
2. Mr.Smith问其它9个人握了几次手,各人回答不一样,所以每个人的握手次数刚好为0-8次,每种不同次数有1个人;
3. 有且只有一个人握了8次手,称之为A,即A与其配偶以外的所有人都握了手;
4. 记A的配偶为a,除了A夫妇以外,所有人都至少握了1次手(和A),所以握手0次的肯定是a;
5. 从10个人中去掉A夫妇,因为A与其余每个人握了1次手,而a没有与别人握手,所以去掉A夫妇后,其它人的握手次数为1-7(不算Mr.Smith),再去掉他们各自与A握的那次手不算,则各人的握手次数为0-6,还是每种不同次数刚好有1个人;
6. 重复第3-5步4次,直到去掉4对夫妇,最终剩下Mr.&Mrs.Smith,这时Mrs.Smith的握手次数为0,加上4次循环中去掉的4次握手,她总共握了4次手,与每对夫妇中的某一位各握了一次。
一对夫妇,邀请N-1对夫妇参加晚会。夫妇之间,丈夫肯定认识妻子。每个人和自己不认识的人都要握手一次。握手完了之后,男主人站出来问了其他所有人的握手情况。发现,任何一个人的握手情况都和别人不相同。问你,女主人握了几次手(答案是N-1次)
转自 http://hi.baidu.com/luotuo512/item/97f8c9f08497fd0dc7dc453f
A城一个商人有一头驴子和3000根胡萝卜.要将萝卜拉到1000公里外的B城去卖,只能用驴子驮。已知驴子一次性可驮1000根胡萝卜,但每走一公里要吃掉一根胡萝卜.问商人共可卖出多少胡萝卜?
这题的问题出在给的条件不充分,可能有两种情况,一种是非理想状态的拉运萝卜,这种情况的话,一个也不能卖出去;第二种为理想状态下的,就是能在每走一公里的时候能够卸货下来,并且还没有其他的外在因素使得萝卜丢失,这样的理想状态下能够运送到B城833个萝卜。计算过程如下:1、因为有3000萝卜,所以消耗掉前面的1000个萝卜的时候,每前进一公里要来回3次消耗3个萝卜,因此第一次前进了X公里,X=1000/3=333余数为1;2、剩下的2001个萝卜在第334公里的时候需要来回3次才能运送完,我们就将这一公里路算在2000个萝卜在第一次运送的时候算在一起,那么第二次运送萝卜只需要来回2次消耗2个萝卜,因此第二次消耗1000个萝卜前进了Y公里,Y=1000/2=500;现在前进了500+333=833公里,剩下167公里后,萝卜也只剩下了1000个,所以就这1000个直接中途不卸货的一次到达B城,消耗167个萝卜,所以最后剩下1000-167=833个萝卜。
转自 http://wenwen.soso.com/z/q217692689.htm
八皇后问题
算法介绍八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。八皇后问题可以推广为更一般的n皇后摆放问题:这时棋盘的大小变为n×n,而皇后个数也变成n。当且仅当 n = 1 或 n ≥ 4 时问题有解。
Java 算法
public class Queen { // 同栏是否有皇后,1表示有 private int[] column; // 右上至左下是否有皇后 private int[] rup; // 左上至右下是否有皇后 private int[] lup; // 解答 private int[] queen; // 解答编号 private int num; public Queen() { column = new int[8+1]; rup = new int[2*8+1]; lup = new int[2*8+1]; for(int i = 1; i <= 8; i++) column[i] = 1; for(int i = 1; i <= 2*8; i++) rup[i] = lup[i] = 1; queen = new int[8+1]; } public void backtrack(int i) { if(i > 8) { showAnswer(); } else { for(int j = 1; j <= 8; j++) { if(column[j] == 1 && rup[i+j] == 1 && lup[i-j+8] == 1) { queen[i] = j; // 设定为占用 column[j] = rup[i+j] = lup[i-j+8] = 0; backtrack(i+1); column[j] = rup[i+j] = lup[i-j+8] = 1; } } } } protected void showAnswer() { num++; System.out.println("\n解答 " + num); for(int y = 1; y <= 8; y++) { for(int x = 1; x <= 8; x++) { if(queen[y] == x) { System.out.print(" Q"); } else { System.out.print(" ."); } } System.out.println(); } } public static void main(String[] args) { Queen queen = new Queen(); queen.backtrack(1); } }
相关文章推荐
- “3选1”的一个概率游戏有点考验智力
- (转)面试趣味智力问题收集与整理
- 猜牌游戏 【微软面试100题 题二十二题】
- 程序员有趣的面试智力题
- 程序员有趣的面试智力题
- 程序员有趣的面试智力题
- 面试常考智力题
- 我的游戏公司面试记录——chapter 2 游戏蜗牛之旅
- 网易游戏面试
- 【题解】线性筛素数 线性统计范围质因数 小Y的智力游戏
- 【笔试与面试】极致游戏与福富软件
- 面试题之数三退一智力游戏
- 【面试笔试算法】Program 2:Amusing Digits(网易游戏笔试题)
- 程序员有趣的面试智力题
- 直通BAT面试算法---智力题2-赛马
- 我的智力游戏人生
- 24点游戏探秘系列6:用概率统计的眼光看24点游戏
- 收集的面试中的脑力题智力题
- 程序员面试智力题 (2)
- 面试中的智力题及编程实践