1. 程式人生 > >聯想面試智力題,聽說前面三道題必考(有部份解答)

聯想面試智力題,聽說前面三道題必考(有部份解答)

               

聯想面試智力題,所說前面三道題必考,這個沒有被證實過。不過,當用來完完了沒有什麼不可的。
    題目如下:
    1、一條繩子,從一頭點燃,全部燒完要耗時1個小時,問如何用這條繩子測出半個小時。

    我的答案:假設繩子是鈞勻的,把繩子剪成兩斷,其中一斷燒完,那就是半小時。
    2、排成3行3列的矩陣形式的九個點。如何用一筆劃出4條直線,經過這所有九個點。

        用1~9九個數字代表點 從左至右 由上往下排列
        第一條經過左邊147 並且延伸一個點的距離
        第二條經過86也延伸一個點
        第三條經過321
        第四條經過159

       這是百度知道里的答案, 沒有仔細理解題意,題中並沒有說明我們不可以做其它的,只是說了四條線。我就是考我們在遇到問題的時候,是否總是鑽在一個洞裡,還是出洞來尋求合適的幫助。做人真的很難呀。


    3、有100盞燈,從1~100編上號,開始時所有的燈都是關著的,第一次,把所有編號是1的倍數的燈的開關狀態改變一次;第二次,把所有編號是2的倍數的燈的開關狀態改變一次;第三次,把所有編號是3的倍數的燈的開關狀態改變一次;以此類推,直到把所有編號是100得倍數的燈的開關狀態改變一次。問,此時所有開著的燈的編號。

我程式設計解決了:

publicclass ConditionChange100Times {

int[][] numArray=newint[100][2];

/**

*@paramargs

*/

publicstaticvoid main(String[] args) {

// TODO Auto-generated method stub

ConditionChange100Times c=new ConditionChange100Times();

c.initNumArray();//初使化

c.change100Times();//改變一百次,並且把每一次的改變結果都打印出來

}

/**

*初使化

*/

void initNumArray()

{

for(int i=0;i<100;i++)

{

numArray[i][1]=0;

}

}

/**

*改變100

*/

void change100Times()

{

printResult(0);//初使化列印

for(int i=1;i<=100;i++)

{

for(int j=i;j<=100;j++)

{

if(j%i==0)

{

if(numArray[j-1][1]==0)

numArray[j-1][1]=1;

else

numArray[j-1][1]=0;

}

}

printResult(i);//列印每一次的更改結果

}

}

/**

*列印

*/

void printResult(int current)

{

System.out.print(""+current+":");

for(int i=0;i<100;i++)

{

System.out.print(numArray[i][1]+" ");

}

System.out.println("");

}

}
    4、 P先生、Q先生都具有足夠的推理能力。這天,他們正在接受推理面試。
 > 他們知道桌子的抽屜裡有如下16張撲克牌:
 > 紅桃A、Q、4
 > 黑桃J、8、4、2、7、3
 > 草花K、Q、5、4、6
 > 方塊A、5
 > 約翰教授從這16張牌中挑出一張牌來,並把這張牌的點數告訴P先生,把這張牌的花色告訴Q先生。這時,約翰教授問P先生和Q先生:你們能從已知的點數或花色中推知這張牌是什麼牌嗎?
 > P先生:"我不知道這張牌。" Q先生:"我知道你不知道這張牌。" P先生:"現在我知道這張牌了。" Q先生:"我也知道了。" 請問:這張牌是什麼牌?