分治 1 C 描述

2022-06-09 05:45:10 字數 1472 閱讀 4544

花了一下午的時間去搞懂演算法筆記上面的那個全排列的問題, 看來放鬆時間久了**能力的確會下降的很快

遞迴的概念很簡單, 就是乙個函式自己呼叫自己, 然後等到呼叫到不可再呼叫時依次從後往前返回值

函式遞迴有兩個特點:

遞迴邊界: 一般來指函式呼叫到最底層的結果

遞迴式: 即遞迴呼叫

如果乙個函式沒有遞迴邊界, 會因為棧空間不足而出現程式崩潰的情況.

乙個計算階乘的程式

#include #include using namespace std;

int factorial(int x)

int main(void)

在使用++或--時要保持乙個原則, 就是單獨使用, 不要把它們和其它運算 (如常規的四則運算中) 混用, 以免造成困惑.

斐波那契數列在剛學c語言或c++時都會涉及到, 它的一般形式是

1, 1, 2, 3, 5, 8, 13, 21 ....

從中我們可以找到一條規律 :從第二個數開始, 後面每乙個數都是前兩數之和. 如果找出其中的一項, 該怎麼辦

#include #include using namespace std;

int fibonacci(int x)

int main(void)

通過上面這個函式可以看出來, fibonacci函式是將乙個數分解成了幾個1相加的形式求出的. 這裡其實用到了分治的思想

分治, 顧名思義就是分而治之的意思. 將乙個大問題逐漸化為幾個小問題然後依次求解最後全部合併得到最終結果.

分治除了最典型的斐波那契數列, 還有數學中的全排列. 這裡舉個簡單的例子, 求出(1, 2, 3)的全排列

這道題只要簡單的排列組合就可以得到最終答案 : (1, 2, 3) , (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1).

#include #include using namespace std;

int n; /*數字的個數*/

const int maxn = 11; /*數字的位數*/

arrayp; /*用來存放排列好的數字*/

arrayhashtable; /*用來檢查數字x是否在p中*/

void part(int index) /*index, 位數*/

for (int x = 1; x <= n; x++) /*從1到n列舉, 將x填入p中*/

}}int main(void)

1 C基礎介紹

1.程式執行 解釋 借助乙個程式,那個程式能試圖理解你的程式,然後按照你的要求執行。編譯 借助乙個程式,就像乙個翻譯,把你的程式翻譯成計算機真正能懂的語言 機器語言 寫的程式,然後,這個機器語言寫的程式就能直接執行了。注意,語言本身沒有解釋和編譯之分,只是執行的方式不同而已。2.c語言在 作業系統 ...

1 C 程式設計基礎

1 c表示c程式檔案的字尾名,cpp表示c 程式檔案的字尾名 編寫的c 程式的字尾名既可以用.c也可以用.cpp 2 在linux環境下,c程式和c 程式都可以用gcc和g 來編譯,區別是gcc編譯器會根據檔案字尾名對函式或變數名做某些修正,乙個是c的編譯方式,乙個是c 的編譯方式。而g 無論是對....

c 回憶1 《C 大學教程》

1 儲存類 4個儲存類說明符 auto register extern static。識別符號的儲存類說明符可以確定其儲存類 範圍和連線。分兩類 自動儲存類 auto和register。只有變數能作為自動儲存類,函式的區域性變數和引數通常都是自動儲存類。區域性變數預設為自動儲存類。靜態儲存類 ext...