1. 程式人生 > >王道機試指南讀後總結-1

王道機試指南讀後總結-1

為了準備一下競賽,開始從基礎的研究生機試題刷起。今天看完了第二章大部分,第二章主要是介紹了排序、日期類問題、Hash、排版問題、查詢、貪心等在機試中頻繁出現的基本演算法。

對於排版問題,一般來說可以看樣例輸出的格式,通過樣例的格式推出到一般形式。但是由於輸出一般來說是從左向右,從上到下,如果規律是一圈一圈的那種,就要先用二維陣列儲存需要列印的圖案,然後再輸出,也就是先通過定位左上點法、迴圈的方式去把圖案全求出後,再輸出。

對於排序問題,對於很多專案要比較的情況,一般用sort函式和cmp函式,也可以在結構體中過載小於運算子,這樣就不用cmp函數了,sort就2個引數就夠了。

寫一個比較學生成績的例項:

//運算子過載
struct student
{	
	char name[10];
	int score;
	int age;

	bool operator <(const E &a){
	if(score!=a.score)
		return score<a.score;
	int a=strcmp(name,a.name)
	if(a!=0)
		return a;
	else
		return age<a.age;
}
}s[100];

日期類的問題一般都必須判斷閏年,並且把平年和閏年的每個月天數存在二維陣列中,然後以某一天為標準來做。

Hash的機試問題似乎並不像書上考察的重點——解決衝突一樣,這個感覺類似桶排序。

查詢的話如果正常線性查詢超時就要用二分查詢,為了二分查詢就要使某項指標排序,所以就又用到了小於符號過載和sort函式。

不過如果比較的量是字串的話記得要用到strcmp函式。