面试 智力题 概率题 游戏题

来源:互联网 发布:怎么在淘宝搜高仿lv 编辑:程序博客网 时间:2024/06/05 08:58

史密斯夫妇握手问题


题目:


史密斯夫妇邀请另外四对夫妇就餐,已知他们每个人都不和自己握手、不和自己的配偶握手、且不和同一个人握手一次以­上。在大家见面握手寒暄后,史密斯问大家握手了几次,每个人的答案都不一样。问:史密斯太太握手几次

解答:

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);    }}



原创粉丝点击