青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Just enjoy programming

筆試題2(轉(zhuǎn)載)

筆試題二(轉(zhuǎn))

給定九個數(shù),例如:1,3,3,5,6,7,8,8,9計(jì)算出這九個數(shù)的排列的種數(shù)。需要考慮重復(fù)情況,如果給定9個1,則只有一種結(jié)果。
限制:不能使用stl庫
要求:完成函數(shù) unsigned int foo(unsigned int *arr);
輸入算法代碼,并給出算法復(fù)雜度分析。

分析: 

#include <cstdlib>
#include <iostream>

using namespace std;
unsigned int foo(unsigned int *arr)
{
    unsigned int p[] ={1,2,6,24,120,720,5040,40320,362880};
    unsigned int i,j,c,s=p[8];//first the number is p99
    for(i = 0; i < 7; i++)
       for(j = i+1; j < 8; j++)
       {
           if(arr[i]>arr[j])  //swap two number
           {
               arr[i]^=arr[j];
               arr[j]^=arr[i];
               arr[i]^=arr[j];
           }   
       }   
    i = 0;
    c = 0;
    while(i<8)
    {
        j = i+1;
        while(arr[i]==arr[j])//compute the number of the repetition 
        {
            c++;   
            j++; 
        }   
        s/=p[c];
        c=0;
        i=j;
    }   
    return s;
}
  
int main()
{
    unsigned int a[]={1,3,3,5,6,7,8,8,9};
    cout<<"The number of permutation is: "<<foo(a)<<endl;
    system("pause");
    return 0;
}    
還可以改進(jìn)排序那部分。

轉(zhuǎn)一個經(jīng)典的題目:

給一個天平,問如何用3次把這個小球找出來
并且求出這個小球是比其他的輕還是重
將12個球分別編號為a1,a2,a3.......a10,a11,a12.
第一步:將12球分開3撥,每撥4個,a1~a4第一撥,記為b1, a5~a8第2撥,記為b2,其余第3撥,記為b3;
第二步:將b1和b2放到天平兩盤上,記左盤為c1,右為c2;這時候分兩中情況:

1.c1和c2平衡,此時可以確定從a1到a8都是常球;然后把c2拿空,并從c1上拿下a4,從a9到a12四球里隨便取三球,假設(shè)為a9到a11,放到c2上。此時c1上是a1到a3,c2上是a9到a11。從這里又分三種情況:
     A:天平平衡,很簡單,說明沒有放上去的a12就是異球,而到此步一共稱了兩次,所以將a12隨便跟11個常球再稱一次,也就是第三次,馬上就可以確定a12是重還是輕;
     B: 若c1上升,則這次稱說明異球?yàn)閍9到a11三球中的一個,而且是比常球重。取下c1所有的球,并將a8放到c1上,將a9取下,比較a8和a11(第三 次稱),如果平衡則說明從c2上取下的a9是偏重異球,如果不平衡,則偏向哪盤則哪盤里放的就是偏重異球;
     C:若c1下降,說明a9到a11里有一個是偏輕異球。次種情況和B類似,所以接下來的步驟照搬B就是;

2.c1和c2不平衡,這時候又分兩種情況,c1上升和c1下降,但是不管哪種情況都能說明a9到a12是常球。這步是解題的關(guān)鍵。也是這個題最妙的地方。
     A:c1上升,此時不能判斷異球在哪盤也不能判斷是輕還是重。取下c1中的a2到a4三球放一邊,將c2中的a5和a6放到c1上,然后將常球a9放到c2上。至此,c1上是a1,a5和a6,c2上是a7,a8和a9。此時又分三中情況:
         1) 如果平衡,說明天平上所有的球都是常球,異球在從c1上取下a2到a4中。而且可以斷定異球輕重。因?yàn)閍5到a8都是常球,而第2次稱的時候c1是上升 的,所以a2到a4里必然有一個輕球。那么第三次稱就用來從a2到a4中找到輕球。這很簡單,隨便拿兩球放到c1和c2,平衡則剩余的為要找球,不平衡則 哪邊低則哪個為要找球;
         2)c1仍然保持上升,則說明要么a1是要找的輕球,要么a7和a8兩球中有一個是重球(這步懂吧? 好好想想,很簡單的。因?yàn)閍9是常球,而取下的a2到a4肯定也是常球,還可以推出換盤放置的a5和a6也是常球。所以要么a1輕,要么a7或a8重)。 至此,還剩一次稱的機(jī)會。只需把a(bǔ)7和a8放上兩盤,平衡則說明a1是要找的偏輕異球,如果不平衡,則哪邊高說明哪個是偏重異球;
         3)如果換球稱第2次后天平平衡打破,并且c1降低了,這說明異球肯定在換過來的a5和a6兩求中,并且異球偏重,否則天平要么平衡要么保持c1上升。確定要找球是偏重之后,將a5和a6放到兩盤上稱第3次根據(jù)哪邊高可以判定a5和a6哪個是重球;
     B: 第1次稱后c1是下降的,此時可以將c1看成c2,其實(shí)以后的步驟都同A,所以就不必要再重復(fù)敘述了。至此,不管情況如何,用且只用三次就能稱出12個外 觀手感一模一樣的小球中有質(zhì)量不同于其他11球的偏常的球。而且在稱的過程中可以判定其是偏輕還是偏重。

3.U2 合唱團(tuán)在17 分鐘內(nèi)得趕到演唱會場,途中必需跨過一座橋,四個人從橋的同一端出發(fā),你得幫助他們到達(dá)另一端,天色很暗,而他們只有一只手電筒。一次同時最多可以有兩人 一起過橋,而過橋的時候必須持有手電筒,所以就得有人把手電筒帶來帶去,來回橋兩端。手電筒是不能用丟的方式來傳遞的。四個人的步行速度各不同,若兩人同 行則以較慢者的速度為準(zhǔn)。Bono 需花1 分鐘過橋,Edge 需花2 分鐘過橋,Adam需花 5 分鐘過橋,Larry 需花10 分鐘過橋。他們要如何在17 分鐘內(nèi)過橋呢?(有個同濟(jì)的學(xué)生寫文章說他當(dāng)時在微軟面試時就是碰到了這道題,最短只能做出在19分鐘內(nèi)過橋,微軟的人對他講這樣的結(jié)果已經(jīng)是不錯的 了!) 
  A點(diǎn)到 B 點(diǎn)
 1 和2 過去 2 分鐘 2 
 2 過來 4 分鐘 2+2=4
10和 5過去 14 分鐘 4+10=14  
1 過來 15 分鐘 14+1=15  
1 和2 過去 17 分鐘 15+2=17

第一組  
  1.燒一根不均勻的繩,從頭燒到尾總共需要1個小時。現(xiàn)在有若干條材質(zhì)相同的繩子,問如何用燒繩的方法來計(jì)時一個小時十五分鐘呢?
       ans:三根繩,開始的時候,第一根點(diǎn)燃兩端,第二根點(diǎn)燃一端,第三根不點(diǎn)。第一根繩燒完(30分鐘)后,點(diǎn)燃第二根繩的另一端,第二根只要15分鐘就可以燒完了,第二根繩燒完(45分鐘)后,點(diǎn)燃第三根繩子兩端,第三根繩燒完(1小時15分)后,計(jì)時完成

  2.你有一桶果凍,其中有黃色、綠色、紅色三種,閉上眼睛抓取同種顏色的兩個。抓取多少個就可以確定你肯定有兩個同一顏色的果凍?

  3.如果你有無窮多的水,一個3公升的提捅,一個5公升的提捅,兩只提捅形狀上下都不均勻,問你如何才能準(zhǔn)確稱出4公升的水?

  4.一個岔路口分別通向誠實(shí)國和說謊國。來了兩個人,已知一個是誠實(shí)國的,另一個是說謊國的。誠實(shí)國永遠(yuǎn)說實(shí)話,說謊國永遠(yuǎn)說謊話?,F(xiàn)在你要去說謊國,但不知道應(yīng)該走哪條路,需要問這兩個人。請問應(yīng)該怎么問?

  5.12個球一個天平,現(xiàn)知道只有一個和其它的重量不同,問怎樣稱才能用三次就找到那個球。13個呢?(注意此題并未說明那個球的重量是輕是重,所以需要仔細(xì)考慮)

  6.在9個點(diǎn)上畫10條直線,要求每條直線上至少有三個點(diǎn)?

  7.在一天的24小時之中,時鐘的時針、分針和秒針完全重合在一起的時候有幾次?都分別是什么時間?你怎樣算出來的?

  8.怎么樣種植4棵樹木,使其中任意兩棵樹的距離相等?

  第二組  

  1.為什么下水道的蓋子是圓的?

  2.中國有多少輛汽車?

  3.將汽車鑰匙插入車門,向哪個方向旋轉(zhuǎn)就可以打開車鎖?

  4.如果你要去掉中國的34個省(含自治區(qū)、直轄市和港澳特區(qū)及臺灣省)中的任何一個,你會去掉哪一個,為什么?

  5.多少個加油站才能滿足中國的所有汽車?

  6.想象你站在鏡子前,請問,為什么鏡子中的影象可以顛倒左右,卻不能顛倒上下?

  7.為什么在任何旅館里,你打開熱水,熱水都會瞬間傾瀉而出?

  8.你怎樣將Excel的用法解釋給你的奶奶聽?

  9.你怎樣重新改進(jìn)和設(shè)計(jì)一個ATM銀行自動取款機(jī)?

  10.如果你不得不重新學(xué)習(xí)一種新的計(jì)算機(jī)語言,你打算怎樣著手來開始?

  11.如果你的生涯規(guī)劃中打算在5年內(nèi)受到獎勵,那獲取該項(xiàng)獎勵的動機(jī)是什么?觀眾是誰?

  12.如果微軟告訴你,我們打算投資五百萬美元來啟動你的投資計(jì)劃,你將開始什么樣商業(yè)計(jì)劃?為什么?

  13.如果你能夠?qū)⑷澜绲碾娔X廠商集合在一個辦公室里,然后告訴他們將被強(qiáng)迫做一件事,那件事將是什么? 

 

第三組  

  1.你讓工人為你工作7天,回報(bào)是一根金條,這個金條平分成相連的7段,你必須在每天結(jié)束的時候給他們一段金條。如果只允許你兩次把金條弄斷,你如何給你的工人付費(fèi)?

2.有一輛火車以每小時15公里的速度離開北京直奔廣州,同時另一輛火車每小時20公里的速度從廣州開往北京。如果有一只鳥,以30公里每小時的速度和 兩輛火車同時啟動,從北京出發(fā),碰到另一輛車后就向相反的方向返回去飛,就這樣依次在兩輛火車之間來回地飛,直到兩輛火車相遇。請問,這只鳥共飛行了多長 的距離?

  3.你有四個裝藥丸的罐子,每個藥丸都有一定的重量,被污染的藥丸是沒被污染的藥丸的重量+1。只稱量一次,如何判斷哪個罐子的藥被污染了?

  4.門外三個開關(guān)分別對應(yīng)室內(nèi)三盞燈,線路良好,在門外控制開關(guān)時候不能看到室內(nèi)燈的情況,現(xiàn)在只允許進(jìn)門一次,確定開關(guān)和燈的對應(yīng)關(guān)系?

  5.人民幣為什么只有1、2、5、10的面值?

  6.你有兩個罐子以及50個紅色彈球和50個藍(lán)色彈球,隨機(jī)選出一個罐子, 隨機(jī)選出一個彈球放入罐子,怎么給出紅色彈球最大的選中機(jī)會?在你的計(jì)劃里,得到紅球的幾率是多少?

  7.給你兩顆6面色子,可以在它們各個面上刻上0-9任意一個數(shù)字,要求能夠用它們拼出任意一年中的日期數(shù)值

  第四組 

  第一題 . 五個海盜搶到了100顆寶石,每一顆都一樣大小和價值連城。他們決定這么分:

  抽簽決定自己的號碼(1、2、3、4、5)

  首先,由1號提出分配方案,然后大家表決,當(dāng)且僅當(dāng)超過半數(shù)的人同意時,按照他的方案

  進(jìn)行分配,否則將被扔進(jìn)大海喂鯊魚

  如果1號死后,再由2號提出分配方案,然后剩下的4人進(jìn)行表決,當(dāng)且僅當(dāng)超過半數(shù)的人同

  意時,按照他的方案進(jìn)行分配,否則將被扔入大海喂鯊魚

  依此類推

  條件:每個海盜都是很聰明的人,都能很理智地做出判斷,從而做出選擇。

  問題:第一個海盜提出怎樣的分配方案才能使自己的收益最大化?

  第二題 . 一道關(guān)于飛機(jī)加油的問題,已知:

  每個飛機(jī)只有一個油箱,

  飛機(jī)之間可以相互加油(注意是相互,沒有加油機(jī))

  一箱油可供一架飛機(jī)繞地球飛半圈,

  問題:

  為使至少一架飛機(jī)繞地球一圈回到起飛時的飛機(jī)場,至少需要出動幾架飛機(jī)?(所有飛機(jī)從同一機(jī)場起飛,而且必須安全返回機(jī)場,不允許中途降落,中間沒有飛機(jī)場)第三題. 汽車加油問題  

  一輛載油500升的汽車從A開往1000公里外的B,已知汽車每公里耗油量為1升,A處有無窮多的油,其他任何地點(diǎn)都沒有油,但該車可以在任何地點(diǎn)存放油以備中轉(zhuǎn),問從A到B最少需要多少油

  第四題. 擲杯問題

  一種杯子,若在第N層被摔破,則在任何比N高的樓層均會破,若在第M層不破,則在任何比M低的樓層均會破,給你兩個這樣的杯子,讓你在100層高的樓層中測試,要求用最少的測試次數(shù)找出恰巧會使杯子破碎的樓層。

  第五題. 推理游戲

  教授選出兩個從2到9的數(shù),把它們的和告訴學(xué)生甲,把它們的積告訴學(xué)生乙,讓他們輪流猜這兩個數(shù)

  甲說:“我猜不出”

  乙說:“我猜不出”

  甲說:“我猜到了”

  乙說:“我也猜到了”

  問這兩個數(shù)是多少

  第六題. 病狗問題

一個住宅區(qū)內(nèi)有100戶人家,每戶人家養(yǎng)一條狗,每天傍晚大家都在同一個地方遛狗。已知這些狗中有一部分病狗,由于某種原因,狗的主人無法判斷自己的狗 是否是病狗,卻能夠分辨其他的狗是否有病,現(xiàn)在,上級傳來通知,要求住戶處決這些病狗,并且不允許指認(rèn)他人的狗是病狗(就是只能判斷自己的),過了7天之 后,所有的病狗都被處決了,問,一共有幾只病狗?為什么?

  第八題. 監(jiān)獄里有100個房間,每個房間內(nèi)有一囚犯。一天,監(jiān)獄長說,你 們獄房外有一電燈,你們在放風(fēng)時可以控制這個電燈(熄或亮)。每天只能有一個人出來放風(fēng),并且防風(fēng)是隨機(jī)的。如果在有限時間內(nèi),你們中的某人能對我說: “我敢保證,現(xiàn)在每個人都已經(jīng)至少放過一次風(fēng)了。”我就放了你們!問囚犯們要采取什么策略才能被監(jiān)獄長放掉?如果采用了這種策略,大致多久他們可以被釋 放?

 

第五組  

  1.某手機(jī)廠家由于設(shè)計(jì)失誤,有可能造成電池壽命比原來設(shè)計(jì)的壽命短一半(不是沖放電時間),解決方案就是免費(fèi)更換電池或給50元購買該廠家新手機(jī)的折換券。請給所有已購買的用戶寫信告訴解決方案。

  2.一高層領(lǐng)導(dǎo)在參觀某博物館時,向博物館館員小王要了一塊明代的城磚作為紀(jì)念,按國家規(guī)定,任何人不得將博物館收藏品變?yōu)樗接?。博物館館長需要如何寫信給這位領(lǐng)導(dǎo),將城磚取回。

  3.營業(yè)員小姐由于工作失誤,將2萬元的筆記本電腦以1.2萬元錯賣給李先生,王小姐的經(jīng)理怎么寫信給李先生試圖將錢要回來?

  4.給你一款新研制的手機(jī),如果你是測試組的組長,你會如何測試?

  5.如何為函數(shù)int atoi(const char * pstr)編寫測試向量?

  第六組  

  1.鏈表和數(shù)組的區(qū)別在哪里?

  2.編寫實(shí)現(xiàn)鏈表排序的一種算法。說明為什么你會選擇用這樣的方法?

  3.編寫實(shí)現(xiàn)數(shù)組排序的一種算法。說明為什么你會選擇用這樣的方法?

  4.請編寫能直接實(shí)現(xiàn)char * strcpy(char * pstrDest,const char * pstrSource)函數(shù)功能的代碼。

  5.編寫反轉(zhuǎn)字符串的程序,要求優(yōu)化速度、優(yōu)化空間。

  6.在鏈表里如何發(fā)現(xiàn)循環(huán)鏈接?

  7.給出洗牌的一個算法,并將洗好的牌存儲在一個整形數(shù)組里。

  8.寫一個函數(shù),檢查字符是否是整數(shù),如果是,返回其整數(shù)值。(或者:怎樣只用4行代碼

  9.給出一個函數(shù)來輸出一個字符串的所有排列。

  10.請編寫實(shí)現(xiàn)void * malloc(int)內(nèi)存分配函數(shù)功能一樣的代碼。

  11.給出一個函數(shù)來復(fù)制兩個字符串A和B。字符串A的后幾個字節(jié)和字符串B的前幾個字節(jié)重疊。

  12.怎樣編寫一個程序,把一個有序整數(shù)數(shù)組放到二叉樹中?

  13.怎樣從頂部開始逐層打印二叉樹結(jié)點(diǎn)數(shù)據(jù)?請編程。

  14.怎樣把一個鏈表掉個順序(也就是反序,注意鏈表的邊界條件并考慮空鏈表)? --

  15.請編寫能直接實(shí)現(xiàn)int atoi(const char * pstr)函數(shù)功能的代碼

-----------------------------------------------------------------------------------
第一組題答案: 

  
  2)根據(jù)抽屜原理,4個

  3)3升裝滿;3升-〉5升(全注入);3升裝滿;3升-〉5升(剩1升);5升倒掉;3升-〉5升(注入1升);3升裝滿;3升-〉5升;完成(另:可用回溯法編程求解)

  4)問其中一人:另外一個人會說哪一條路是通往誠實(shí)國的?回答者所指的那條路必然是通往說謊國的。

  5)12個球:

  第一次:4,4 如果平了:

  那么剩下的球中取3放左邊,取3個好球放右邊,稱:

  如果左邊重,那么取兩個球稱一下,哪個重哪個是次品,平的話第三個重,是次品,輕的話同理

  如果平了,那么剩下一個次品,還可根據(jù)需要稱出次品比正品輕或者重

  如果不平:

  那么不妨設(shè)左邊重右邊輕,為了便于說明,將左邊4顆稱為重球,右邊4顆稱為輕球,剩下4顆稱為好球

  取重球2顆,輕球2顆放在左側(cè),右側(cè)放3顆好球和一顆輕球

  如果左邊重

  稱那兩顆重球,重的一個次品,平的話右邊輕球次品

  如果右邊重

  稱左邊兩顆輕球,輕的一個次品

  如果平

  稱剩下兩顆重球,重的一個次品,平的話剩下那顆輕球次品

  13個球:

  第一次:4,4,如果平了

  剩5顆球用上面的方法仍舊能找出次品,只是不能知道次品是重是輕

  如果不平,同上 

6)  

  o o o

  o o o

  o o o

  7)

  23次,因?yàn)榉轴樢D(zhuǎn)24圈,時針才能轉(zhuǎn)1圈,而分針和時針重合兩次之間的間隔顯然>1小時,它們有23次重合機(jī)會,每次重合中秒針有一次重合機(jī)會,所以是23次

  重合時間可以對照手表求出,也可列方程求出

  8)

  在地球表面種樹,做一個地球內(nèi)接的正四面體,內(nèi)接點(diǎn)即為所求

  第二組 無標(biāo)準(zhǔn)答案  

  第三組 

  1. 分成1,2,4三段,第一天給1,第二天給2取回1,第3天給1,第4天給4取回1、2,第5天給1,第6天給2取回1,第七天給1

  2. 求出火車相遇時間,鳥速乘以時間就是鳥飛行的距離

  3. 四個罐子中分別取1,2,3,4顆藥丸,稱出比正常重多少,即可判斷出那個罐子的藥被污染

  4. 三個開關(guān)分別:關(guān),開,開10分鐘,然后進(jìn)屋,暗且涼的為開關(guān)1控制的燈,亮的為開關(guān)2控制的燈,暗且熱的為開關(guān)3控制的燈

  5. 因?yàn)榭梢杂?,2,5,10組合成任何需要的貨幣值,日常習(xí)慣為10進(jìn)制

  6. 題意不理解...*_*

  7. 012345 0126(9)78

  第四組 都是很難的題目  

  第一題:97 0 1 2 0 或者 97 0 1 0 2 (提示:可用逆推法求出)

  第二題:3架飛機(jī)5架次,飛法:

ABC 3架同時起飛,1/8處,C給AB加滿油,C返航,1/4處,B給A加滿油,B返航,A到達(dá)1/2處,C從機(jī)場往另一方向起飛,3/4處,C同 已經(jīng)空油箱的A平分剩余油量,同時B從機(jī)場起飛,AC到7/8處同B平分剩余油量,剛好3架飛機(jī)同時返航。所以是3架飛機(jī)5架次。第三題:需要建立數(shù)學(xué)模 型  

  (提示,嚴(yán)格證明該模型最優(yōu)比較麻煩,但確實(shí)可證,大膽猜想是解題關(guān)鍵)

  題目可歸結(jié)為求數(shù)列 an=500/(2n+1) n=0,1,2,3......的和Sn什么時候大于等于1000,解得n>6

  當(dāng)n=6時,S6=977.57

  所以第一個中轉(zhuǎn)點(diǎn)離起始位置距離為1000-977.57=22.43公里

  所以第一次中轉(zhuǎn)之前共耗油 22.43*(2*7+1)=336.50升

  此后每次中轉(zhuǎn)耗油500升

  所以總耗油量為7*500+336.50=3836.50升

  第四題:需要建立數(shù)學(xué)模型

  題目可歸結(jié)為求自然數(shù)列的和S什么時候大于等于100,解得n>13

  第一個杯子可能的投擲樓層分別為:14,27,39,50,60,69,77,84,90,95,99,100

  第五題:3和4(可嚴(yán)格證明)

  設(shè)兩個數(shù)為n1,n2,n1>=n2,甲聽到的數(shù)為n=n1+n2,乙聽到的數(shù)為m=n1*n2

  證明n1=3,n2=4是唯一解

  證明:要證以上命題為真,不妨先證n=7

  1)必要性:

  i) n>5 是顯然的,因?yàn)閚<4不可能,n=4或者n=5甲都不可能回答不知道

  ii) n>6 因?yàn)槿绻鹡=6的話,那么甲雖然不知道(不確定2+4還是3+3)但是無論是2,4還是3,3乙都不可能說不知道(m=8或者m=9的話乙說不知道是沒有道理的)

iii) n<8 因?yàn)槿绻鹡>=8的話,就可以將n分解成 n=4+x 和 n=6+(x-2),那么m可以是4x也可以是6(x-2) 而4x=6(x-2)的必要條件是x=6即n=10,那樣n又可以分解成8+2,所以總之當(dāng)n>=8時,n至少可以分解成兩種不同的合數(shù)之和,這樣 乙說不知道的時候,甲就沒有理由馬上說知道。

  以上證明了必要性

  2)充分性

  當(dāng)n=7時,n可以分解成2+5或3+4

  顯然2+5不符合題意,舍去,容易判斷出3+4符合題意,m=12,證畢

  于是得到n=7 m=12 n1=3 n2=4是唯一解。第六題:7只(數(shù)學(xué)歸納法證明)  

  1)若只有1只病狗,因?yàn)椴」分魅丝床坏接衅渌」?,必然會知道自己的狗是病?前提是一定存在病狗),所以他會在第一天把病狗處決。

  2)設(shè)有k只病狗的話,會在第k天被處決,那么,如果有k+1只,病狗的主人只會看到k只病狗,而第k天沒有人處決病狗,病狗主人就會在第k+1天知道自己的狗是病狗,于是病狗在第k+1天被處決

  3)由1)2)得,若有n只病狗,必然在第n天被處決

  第八題:

  約定好一個人作為報(bào)告人(可以是第一個放風(fēng)的人)

  規(guī)則如下:

  1、報(bào)告人放風(fēng)的時候開燈并數(shù)開燈次數(shù)

  2、其他人第一次遇到開著燈放風(fēng)時,將燈關(guān)閉

  3、當(dāng)報(bào)告人第100次開燈的時候,去向監(jiān)獄長報(bào)告,要求監(jiān)獄長放人......

  按照概率大約30年后(10000天)他們可以被釋放

  第五組無標(biāo)準(zhǔn)答案  

  第六組部分題參考答案:  

  4.

char * strcpy(char * pstrDest,const char * pstrSource)
{
 assert((pstrDest!=NULL)&&(pstrSource!=NULL)); 
 char * pstr=pstrDest;
 while((*(pstrDest++)=*(pstrSource++))!='\0');
        return pstr;
}
 


  5.

char * strrev(char * pstr)
{
 assert(pstr!=NULL);
 
 char * p=pstr;
 char * pret=pstr;
 while(*(p++)!='\0');
 p--;
 char tmp;
 while(p>pstr)
 {
  tmp=*p;
  *(p--)=*(pstr);
  *(pstr++)=tmp;  
 }
 return pret;

百度筆試題:
IP段格式:ip1 ip2。之間以空格分開,ip形式為X.X.X.X,數(shù)據(jù)保存在文件中,文件不超過2k行,無序?,F(xiàn)在要求編寫算法去掉可重IP,可重有三種形式:包含、交疊、緊靠。

例如,文件內(nèi)容為:
10.0.0.0 10.0.0.12
10.0.0.5 10.0.0.10    ( <= 包含)
10.0.0.8 10.0.0.15    ( <= 交疊)
10.0.0.15 10.0.0.24   ( <= 緊靠)

最后輸出為:
10.0.0.0 10.0.0.24

code:
/*
**這個函數(shù)的作用是將文件中的一行對應(yīng)的兩個數(shù)據(jù)轉(zhuǎn)換成整形的數(shù)據(jù)
**比如把10.0.0.0 10.0.0.12 轉(zhuǎn)換后,left=10*224,就是10.0.0.0對應(yīng)的整數(shù),每個數(shù)字對應(yīng)8位,right=left+12
*/
void ParseLine( char line[], size_t length, unsigned int &left, unsigned int &right)
{
    size_t i;
    for( i=0; i<length; i++ )
    {
        if ( line[i]=='.' || line[i]==' ' )//將點(diǎn)變成0
        {
            line[i]=0;
        }
    }
    char *p   = (char*)&left;
    char *num = line;
    for( i=3; i<4; --i ) //size是size_t,而size_t是unsigned int,所以i=0再自減后變成了最大的整數(shù),循環(huán)就會終止
    {
 // cout<<i<<",";
        *(p+i) = strtol( num, &num  ,10 );
        cout<<static_cast<int>(*(p+i))<<",";
        ++num;
 // cout<<num<<":";
    }
    cout<<endl;
    p = (char*)&right;
    for( i=3; i<4; --i )
    {
        *(p+i) = strtol( num, &num, 10 );
        ++num;
    }
}


void UniqueSequence(  vector<unsigned int> & uSeq, unsigned int left, unsigned int right )
{
    size_t i, lPos=-1, rPos=-1;
    for( i=0; i<uSeq.size(); i++ )
    {
        if( left <= uSeq.at(i)  )
        {
            lPos = i;
            break;
        }
    }
    for( ;i<uSeq.size(); i++ )
    {
        if( right<=uSeq.at(i) )
        {
            rPos=i;
            break;
        }
    }
    if( lPos == -1 )
    {
        uSeq.push_back( left );
        uSeq.push_back( right );   
        return;
    }

    if( lPos%2 == 0 )
    {
        if(  uSeq.at(lPos)==left )
        {   
        }
  else
        {
            uSeq.insert( uSeq.begin()+lPos, left );
        }
    }
 else
    {
        --lPos;
    }
    if( rPos == -1 )
    {
        uSeq.erase( uSeq.begin()+(lPos+1), uSeq.end() );
        uSeq.push_back(right);
    }
 else if(  rPos%2 == 0  )
    {
        if( uSeq.at(rPos)== right )
        {
            uSeq.erase( uSeq.begin()+(lPos+1), uSeq.begin()+(rPos+1) );
        }
  else
        {
            uSeq.erase( uSeq.begin()+(lPos+1), uSeq.begin()+rPos );
            uSeq.insert( uSeq.begin()+rPos, right  );
        }
    }
 else
    {
        uSeq.erase( uSeq.begin()+(lPos+1), uSeq.begin()+rPos );
    }
}


void PrintIP( unsigned int num )
{
    char *p = (char*)&num;
    for( size_t i=3;i>0; --i)
    {
        cout<< (int)p[i]<<".";
    }
    cout<<(int)p[0];
}

#define MAX_BUFFER_LENGTH 100
int main()
{
    unsigned int left, right;
    char buffer[MAX_BUFFER_LENGTH];
    ifstream infile( "test.txt" );
    if( infile.fail() )
    {
        return 0;
    }
    vector<unsigned int> uSeq;
    while( infile.getline(buffer, MAX_BUFFER_LENGTH) )
    {
        ParseLine(buffer, strlen(buffer), left, right);
 // cout<<left<<","<<right<<endl;
        UniqueSequence( uSeq, left, right );
  for( size_t i=0; i<uSeq.size(); i+=2 )
    {
        PrintIP(uSeq.at(i) );
        cout<<"  ";
        PrintIP(uSeq.at(i+1));
        cout<<endl;
    }
  cout<<endl;
    }
    for( size_t i=0; i<uSeq.size(); i+=2 )
    {
        PrintIP(uSeq.at(i) );
        cout<<"  ";
        PrintIP(uSeq.at(i+1));
        cout<<endl;
    }
    return 0;
}

/*long strtol( const char *nptr, char **endptr, int base ),其中nptr是以NULL結(jié)尾字符串,endptr是字符串停止掃描的地方(Pointer to character that stops scan),strtol returns the value represented in the string nptr,The strtol function converts nptr to a long. strtol stops reading the string nptr at the first character it cannot recognize as part of a number. This may be the terminating null character, or it may be the first numeric character greater than or equal to base.
string = "-10110134932This stopped it";
  l = strtol( string, &stopstring, 10 );
  printf( "string = %s", string );
  printf("   strtol = %ld", l );
  printf("   Stopped scan at: %s", stopstring );
  string = "10110134932";
  printf( "string = %s\n", string );
  /* Convert string using base 2, 4, and 8: */
  for( base = 2; base <= 8; base *= 2 )
  {
     /* Convert the string: */
     ul = strtoul( string, &stopstring, base );
     printf( "   strtol = %ld (base %d)\n", ul, base );
     printf( "   Stopped scan at: %s\n", stopstring );
  }
打印的結(jié)果是:
string = -10110134932This stopped it   strtol = -2147483647   Stopped scan at: This stopped itstring = 10110134932
  strtol = 45 (base 2)
  Stopped scan at: 34932
  strtol = 4423 (base 4)
  Stopped scan at: 4932
  strtol = 2134108 (base 8)
  Stopped scan at: 932
*/

5.如果存在兩個變量:a和b,不使用“if”、“?:”、 “switch”和其它的判斷語句,找出兩個數(shù)中的最大值。
      答案:( ( a + b ) + abs( a - b ) ) / 2

6. 寫一個函數(shù)找出一個整數(shù)數(shù)組中,第二大的數(shù) (microsoft)
       const int MINNUMBER = -32767 ;
       int find_sec_max( int data[] , int count)
       {
                int maxnumber = data[0] ;
                int sec_max = MINNUMBER ;
                for ( int i = 1 ; i < count ; i++)
                {
                    if ( data[i] > maxnumber )
                    {
                         sec_max = maxnumber ;
                         maxnumber = data[i] ;
                    }
                    else
                    {
                             if ( data[i] > sec_max )
                                     sec_max = data[i] ;
                    }
                }
                return sec_max ;
        }

posted on 2011-03-02 12:19 周強(qiáng) 閱讀(386) 評論(0)  編輯 收藏 引用 所屬分類: 筆試面試

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            日韩一区二区精品在线观看| 久久人人97超碰国产公开结果| 999在线观看精品免费不卡网站| 亚洲高清久久久| 黄网站色欧美视频| 亚洲大片在线| 99精品热视频只有精品10| 日韩亚洲国产欧美| 午夜精品亚洲| 久久久另类综合| 欧美激情综合色| 亚洲人成人一区二区在线观看| 美女网站久久| 亚洲欧洲日产国产网站| 夜夜嗨一区二区| 亚洲欧美日韩一区| 欧美成人精品在线视频| 欧美日本免费一区二区三区| 国产精品高潮久久| 一色屋精品视频免费看| 在线亚洲高清视频| 久久亚洲视频| 一本久久综合| 久久躁狠狠躁夜夜爽| 欧美日韩在线不卡| 精品动漫3d一区二区三区| 在线综合亚洲| 欧美freesex交免费视频| 夜夜嗨av一区二区三区中文字幕| 久久九九久精品国产免费直播| 欧美日韩一区二区三区高清| 樱桃国产成人精品视频| 亚洲欧美日韩一区在线观看| 欧美激情精品久久久久久变态| 亚洲一级在线观看| 欧美人成免费网站| 亚洲国产精品久久久| 欧美一级成年大片在线观看| 亚洲国产精品尤物yw在线观看| 亚洲免费婷婷| 欧美日韩综合久久| 日韩视频一区二区| 欧美国产91| 久久久久高清| 国产一区二区在线免费观看| 亚洲一区二区四区| 亚洲精品免费在线| 欧美电影在线免费观看网站| 在线不卡亚洲| 免费在线看一区| 久久久久国产精品一区三寸| 国产精品主播| 欧美一区二区在线看| 亚洲视频导航| 国产精品久久久久久久久久三级 | 欧美体内she精视频在线观看| 有码中文亚洲精品| 久久精品国产免费观看| 99国产精品视频免费观看| 欧美成人在线免费视频| 在线观看亚洲视频啊啊啊啊| 久久久亚洲国产美女国产盗摄| 午夜精品福利在线| 国产喷白浆一区二区三区 | 欧美激情第一页xxx| 久久久久久久久久久久久9999| 国产一区二区三区高清播放| 久久久久久久综合| 久久久久久久一区| 亚洲国产精品第一区二区| 欧美成人激情视频| 欧美理论大片| 亚洲综合色视频| 午夜免费在线观看精品视频| 国产日韩欧美综合| 免费成人高清| 欧美全黄视频| 久久精品国产成人| 久久婷婷丁香| 亚洲视频第一页| 亚洲在线视频观看| 精品不卡一区| 亚洲日本免费| 欧美性jizz18性欧美| 亚洲午夜羞羞片| 久久国产视频网| 亚洲精品一区二区三区不| 亚洲激情影视| 国产欧美精品在线观看| 麻豆精品一区二区综合av| 欧美激情一区二区三区四区| 香蕉亚洲视频| 麻豆91精品91久久久的内涵| 在线亚洲欧美视频| 欧美在线免费观看视频| 亚洲精品国产精品国自产观看浪潮| 亚洲免费av片| 精品成人在线| 亚洲中字在线| 亚洲另类在线一区| 亚洲一区二区三区四区五区黄| 国产亚洲精品bt天堂精选| 欧美激情在线观看| 国产一区在线观看视频| 日韩视频一区二区三区在线播放免费观看 | 亚洲综合好骚| 美女主播一区| 久久综合久久综合九色| 一区二区欧美视频| 久久精品亚洲乱码伦伦中文 | 夜夜嗨av色一区二区不卡| 国产亚洲一区二区精品| a4yy欧美一区二区三区| 亚洲国产高清一区| 先锋影音国产一区| 亚洲欧美区自拍先锋| 欧美电影在线| 欧美高清视频一区| 国产手机视频精品| 国产精品99久久久久久人| 亚洲人永久免费| 玖玖玖国产精品| 久久精品一区二区三区中文字幕| 欧美日韩在线免费| 亚洲精选一区| 夜夜嗨av一区二区三区网站四季av | av成人黄色| 99视频精品在线| 欧美国产专区| 亚洲人成人99网站| 99精品视频一区| 欧美精品成人91久久久久久久| 欧美国产日韩xxxxx| 亚洲国产精品电影| 免费不卡视频| 亚洲国产另类精品专区| 91久久精品一区二区三区| 久久男人资源视频| 欧美成人国产va精品日本一级| 激情欧美一区二区| 久久久国产亚洲精品| 美日韩精品免费观看视频| 激情久久综艺| 欧美国产一区二区在线观看| 亚洲观看高清完整版在线观看| 亚洲黄色大片| 欧美日韩不卡在线| 一本在线高清不卡dvd| 亚洲宅男天堂在线观看无病毒| 国产精品久久久久av| 午夜精品视频在线| 另类av一区二区| 99热这里只有精品8| 欧美亚一区二区| 欧美一区二区三区四区高清| 男人插女人欧美| 一区二区高清视频| 国产精品少妇自拍| 久久人人爽国产| 日韩亚洲欧美成人一区| 欧美一区二区成人6969| 激情综合五月天| 欧美成年人视频网站| 一区二区三区四区精品| 久久久在线视频| 一区二区三区三区在线| 国产伪娘ts一区| 亚洲精品中文字| 一区二区三区在线免费观看| 欧美中文字幕视频| 欧美国产日本| 99精品视频网| 国产一区视频在线观看免费| 鲁大师影院一区二区三区| 亚洲精选国产| 蜜桃av噜噜一区| 亚洲欧美美女| 亚洲日韩中文字幕在线播放| 国产伦精品一区二区三区免费| 免费欧美高清视频| 午夜精品国产精品大乳美女| 91久久嫩草影院一区二区| 午夜欧美视频| 一本久久a久久免费精品不卡| 国内精品视频666| 国产精品久久久久99| 欧美激情视频一区二区三区免费 | 欧美视频一区二区三区在线观看| 欧美在线www| 亚洲午夜一二三区视频| 亚洲高清123| 久久久久se| 欧美一区二区三区日韩视频| 亚洲精品小视频在线观看| 国产欧美日韩激情| 欧美日韩国产综合网| 蜜臀久久99精品久久久久久9 | 欧美国产日韩二区| 久久亚洲春色中文字幕| 午夜精品久久久久久久99水蜜桃|