演算法知識點彙總

2021-06-07 08:01:38 字數 2525 閱讀 2932

1.求陣列元素之間相鄰的元素個數或者求字串的長度:

指向同乙個陣列的不同元素的兩個指標可以相減,其差便是兩個指標之間相隔的元素個數。

例如在乙個字串中,讓乙個指向該串的首元素,讓另乙個指向字串的結束符,兩個指標相減,其差便是字串的長度

2.怎樣判斷兩個指標指向的是陣列的同乙個元素?

:指標可以互相比較。如指向同乙個陣列元素的兩個指標可以比較,當兩個指標相等時,說明指向陣列的同乙個元素。

3.怎樣對二進位制進行取位?

:and運算通常用於二進位製取位操作,例如乙個數 and 1的結果就是取二進位制的最末位。這可以用來判斷乙個整數的奇偶,二進位制的最末位為0表示該數為偶數,最末位為1表示該數為奇數。

4.怎樣對二進位制特定位賦值?

:按位或(or |):or運算通常用於二進位制特定位上的無條件賦值,例如乙個數or 1的結果就是把二進位制最末位強行變成1。如果需要把二進位制最末位變成0,對這個數or 1之後再減一就可以了,其實際意義就是把這個數強行變成最接近的偶數。

5.可以使用%提取整數中的數字,用/將提取出的數字從整數中去掉。

6.判斷乙個字元是大寫字母,小寫字母,數字或者數字+大小寫字母,用標頭檔案的字元檢測函式,如下

c++提供了若干字元檢測函式,這些函式都在標頭檔案.這些函式檢測單個字元,返回true或者false(實際返回的是0和1)

isdigit(c)//檢測是否是為數字  如isdigit(『7』)

isalpha(c)//檢測是否為字母  如isapha(『a』)

isalnum(c)//數字或者字母時候為真

islower(c)//檢測小寫字母

isupper(c)//

isspace()//

7.怎樣進行單個字元大小寫轉換?

tolower(c)//轉換小寫字母。否則返回本身

toupper(c)//轉換為大寫字母

注意:轉換後的返回值並不是相應的大小寫字母,而是大小寫字母對應的ascii碼,所以,要轉換為大小寫字母,還需要進行型別轉換,如

char ch = 『a』;

cout<(toupper(ch));//顯示a

如果為:cout<

8.判斷一年的第一天是星期幾(用來列印日曆)

int firstday = ((year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400+1)%7; //判斷某年的第一天是星期幾(計算從1970到現在的天數,模7取餘就是今天的星期)

daysofmonths是這個月的天數(123456789,10,11,12)

下個月第一天是星期幾就是firstday = (firstday+daysofmonths)%7;

9.找出符合條件的100個數(n個數):

將這些數放在乙個陣列中,先宣告這個陣列如:int num[100],n = 0;//n用於陣列的計數作用

再篩選,可以自己設定乙個開關,作為跳出迴圈的條件和執行符合情況的條件。

while(n<100)

生成數,

if(符合條件)

10.輸出10個不同的數,

演算法:就是每次新輸入的數,都與原來的所有數比較(因為要儲存原來的數,所以必須把原來的數放在陣列中,才能訪問到這個數),如果沒有相同的,則加入進去,否則丟棄。

(即只有要儲存的數,要訪問的數,有用的數才放在陣列中)

11.遇見多個一次出現數字,就要聯想到陣列,把這些數放在陣列中,能一一訪問。

有的情況下,輸入的數,是臨時的,可能會被立刻拋棄,這時候,就不用引入陣列,直接用迴圈生成一下這個數。即只有要儲存的數,要訪問的數,有用的數才放在陣列中

如int n  = 0;

while(n<10)

a  = rand()%10;

if(滿足條件才)

10設定」開關「的作用:若乙個數符合條件,那麼執行外面的動作,若不符合,則不執行外面的動作。原理就是當遇到不符合條件的數的時候,改變開關值。

和有條件跳出雙重迴圈一樣(不符合,跳出兩層迴圈(內層用break退出,外層用continue,),符合,執行外層迴圈動作)

可表示為

int sw  = 0//開關  

forif(!sw)

典型範例:輸出10個不同的數

void main()

}if (num[i] == a)

else

}for (int j = 0;j<10;j++)

}10.如何跳出雙重迴圈?

for(;;)

if(跳出的條件)

break;

}

11.如果不符合條件,跳出兩次迴圈,如果滿足條件,跳出內層迴圈,執行外層迴圈的動作。與引入開關變數一樣(如果條件符合,則退出笨迴圈且執行外部動作,如果不符合,則不執行外部動作)

for(;;)

if(跳出的條件)

continue;//跳出迴圈的一次迭代

else

}

演算法知識點彙總

貪心演算法 又稱貪婪演算法 是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的是在某種意義上的區域性最優解。貪心演算法不是對所有問題都能得到整體最優解,關鍵是貪心策略的選擇,選擇的貪心策略必須具備無後效性,即某個狀態以前的過程不會影響以後的狀態,只與當...

《啊哈!演算法》知識點彙總

這個知識點總結是朋友的讀書筆記,寫完之後扔給了我,發出來給其他人看看,希望更多的人能知道這本書,擺脫對演算法的陌生和畏懼感,也給我帶來點流量 感謝柏詩峰同學的支援 這份導圖總結自 啊哈!演算法 這本書,但有不僅僅是總結,更標註了許多頁碼的索引,可以在想要回看知識點時快速的找到對應的章節。書裡的演算法...

小知識點彙總

1 為什麼乙個數的各位數之和可以被3整除時,這個數就可以被3整除 設乙個n位數number,從個位起每一位為a1 an 則number a1 a2 10 a3 10 2 an 10 n 1 1 先證必要性 如果number的各位數之和是3的倍數,則a1 a2 an 3k k為正整數 2 由 2 得a...