我沒去參加筆試,但據比木同學說,廣電的筆試很基礎,總共就四道題:1、josephus數小孩問題。2、二分查詢法。3、用棧實現遞迴。4、有關通訊、網路方面的漢譯英、英譯漢。
用棧實現遞迴,我以前專門寫過一篇文章。讀者可以去翻來看看。現在,我自己來解答前兩個問題。
1、josephus問題的描述:編號是1,2,……,n的n個人按照順時針方向圍坐一圈,每個人只有乙個密碼(正整數)。一開始任選乙個正整數作為報數上限值m,從第乙個人開始順時針方向自1開始順序報數,報到m時停止報數。報m的人出列,將他的密碼作為新的m值,從他在順時針方向的下乙個人開始重新從1報數,如此下去,直到所有人全部出列為止。設計乙個程式來求出出列順序。
解這道題有兩種方法,一種是遞迴法、一種是選代法。給出程式://
//遞迴法求解joseph問題,//
//m:第一次的報數次數
//pos:報數的起始位置
//a[2]:乙個二維陣列,a[i][0]存放成員的編號,a[i][1]存放成員的密碼
//n:成員個數
void
joseph_1(
intm,
intpos,
inta[
2],
intn)
//根據m值,求出將要離隊的成員在數姐中的位置
//考因為是迴圈數數,故用求模法
intout
=(pos +m
-1)%
n;//
根據離隊成員的密碼,決定下一次偏移量m =
a[out][1
];//
離隊的成員編號
intnum =a[
out][0];
//離隊處理
cout
<<"成員
"<<
num<<
"號離隊
"<<
endl;
//離開後,該成員後面的所有成員向前移動一位
for(
inti
=out
; i1; i++)
//對下一次進行處理
joseph(m,
out,a, n-1
);}////
//迭代法求解joseph問題///
void
joseph_2(
intm,
intpos,
inta[
2],
intn)
//下一次計數的起始位置
pos
=out;//
人數減1n--
;}cout
<<
"最後一位離隊的成員是
"<][0
]<<"號
"<<
endl;
return;}
//提供測試資料
inta[7][
2] =,,,,,,};
2、二分查詢法,我一直覺得二分查詢法,是一種非常優美的方法,寫起來非常漂亮:
////
二分查詢法
////
a:乙個已經從小到大排好序的陣列
//n:元素個數
//key:欲查詢的關鍵碼
//如果找到,返回關鍵碼所在的下標,否則返回n
intbinarysearch(
inta,
intn,
intkey)
//沒有找到
returnn;}
廣東北電 研發
廣東北電 青山不改 綠水長流 eking 裝載請註明,不要侵犯版權。待遇 碩士7k,本科5.5k,很不錯。一年13個月工資 1 筆試c 考的比較難,一共4題,1個小時完成 1.英譯漢 做完花了15分鐘,英語菜就乙個字!2.中序遍歷乙個二叉樹,不能用遞迴 地球上的人都知道要壓棧,但平時根本就是在用遞迴...
2007廣東北電筆試題目
廣東北電筆試題目 1.兩篇翻譯,中譯英,英譯中。10分 2.程式設計題。40分 有乙個整型陣列,要求從中找出乙個和最大的連續子集,輸出最大的和。如陣列 2,11,4,13,5,2 maxsum 20 11 4 13 20 陣列 7,8,16,2,4,2,15,14,3,7,1,2 maxsum 19...
程式設計師的工作站
今天在macbook pro上面裝了windows7。蠻容易的過程。這讓我想討論一下程式設計師的工具。此外,為了保證最大程度的專注,程式設計師應該在自己的工作環境安裝盡量少的軟體 類似於qq msn 人人桌面 迅雷 暴風影音等等,能不裝就不裝 要裝的話,在有需要的時候才去裝。這些軟體固然可以提供常用...