演算法競賽入門經典Chap5筆記

2021-08-02 13:41:47 字數 1340 閱讀 1849

把手放在鍵盤上時,稍不注意就會往右錯一位。 這樣的話,q會變成w,j會變成k等。 輸入乙個錯位敲出的字串,輸出打字員本來想打出的句子。

樣例輸入:o s,gomr ypfsu/

樣例輸出:i amfine today.

#include 

int main()

return 0;

}

總結:

1. for

(i=0

;s[i]&&s[i]!=c;i++); 內含退出迴圈的兩種情況:1,s[i]==c,即在陣列中找到了輸入的字元。2,遍歷陣列後仍未找到字元,即s[i]為空(因為在字元陣列裡,存在的c語言方法,如strlen(s),計算字串的長度,其中s為指標,strlen要計算字串長度,必須知道**是結尾,因此使用\0表示結尾。只有字元陣列才有\0的概念,其它型別(int)的陣列沒有這個概念。因為其他型別的陣列或者指標,沒有strlen這種方法,而字元陣列尾巴上的這個位置正好可以做哨兵。)

2. i的作用域不限於for迴圈,並且迴圈體為空,迴圈的目的就是找到合適的i;

3. getchar() 的返回值是輸入的字元的ascii碼。

5.2.1小學生算數

要求程式能連續處理多組資料,直到讀到兩個0作為結束標記。

while(scanf(%d%d,&a,&b)==2)

總結:scanf函式的返回是正確輸入的個數,如果遇到資料型別不符的輸入,將不計數並退出,遇到輸入結束標誌,將返回-1,使用這種迴圈條件的好處是,確保輸入內容是符合題目要求的資料型別。

#include 

#include

#include

char word[2000][10];

char sorted[2000][10];

int cmp_string(const void *_a, const void *_b)

int cmp_word(const void *_a, const void *_b)

int main()

qsort(word,n,sizeof(word[0]),cmp_string);

for(int i=0;i

總結:

1 qsort函式的四個引數分別是(起始位址,元素個數,每個元素的大小,比較函式);比較函式的形參裡不要遺漏const,兩個引數均為void型別指標。

2 n為元素個數,26行處的迴圈,新設變數i來限制迴圈次數,不要用while(n),因為while後面還要用。

演算法競賽入門經典 訓練指南 筆記

p1 貪心 自己想的糟糕的演算法 include 從大到小排序龍頭和騎士,每個龍頭由 恰好 能砍掉的騎士來砍 include 貌似沒問題,但是又難寫又慢 include 就當複習stl了 includeusing namespace std int n 1,m 1 int a 30000 vecto...

演算法競賽入門經典筆記(二) STL

演算法競賽入門經典 第2版 學習筆記 1.排序 include include using namespace std int main sort a,a n 排序 int p lower bound a,a 10,2 在已排序的陣列中找2的位置sort可以對任意物件進行排序,可以使用sort a,...

演算法競賽入門經典 訓練指南 筆記

p1 貪心 自己想的糟糕的演算法 include 從大到小排序龍頭和騎士,每個龍頭由 恰好 能砍掉的騎士來砍 include 貌似沒問題,但是又難寫又慢 include 就當複習stl了 includeusing namespace std int n 1,m 1 int a 30000 vecto...