聯想面試智力題,聽說前面三道題必考(有部份解答)
聯想面試智力題,所說前面三道題必考,這個沒有被證實過。不過,當用來完完了沒有什麼不可的。
題目如下:
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先生:"我也知道了。" 請問:這張牌是什麼牌?