C語言求此全排列遞迴演算法解析,C語言如何用遞迴演算法求1 2 3 n

時間 2021-05-04 18:25:42

1樓:匿名使用者

used陣列是全域性變數有隱含初值0;

關於全排列的演算法你可以理解為深搜加回溯。

#include

#define max 10

int used[max]; //用來標記數字是否已經在前面使用過

int result[max]; //存放結果int n;

void print() //輸出結果void proc(int step) //step用來記錄已經擺好了幾個數}}

}int main()

2樓:_____一葉障目

其實used是應該在main裡面初始化的

可以#include

然後main裡面memset(used,0,sizeof(used));

這個演算法生成全排列其實就是列舉的過程

假設有n位,前k位已經生成好了,這時遞迴進行了k層也就是step=k,然後列舉下一位是哪個數字,所以需要用used陣列標記每個數字是否用過,然後回溯。當k==n的時候這時,所有的n位已經生成好了,就可以輸出當前的排列了。

還是不懂得話,可以讓n=4,然後手動的跟蹤除錯一下就好啦~

3樓:匿名使用者

其實都不建議這樣用,遞迴這東西理解起來確實很困難。

c語言如何用遞迴演算法求1!+2!+3!+...n!

4樓:半季流年

#include

float fun(int n)

void main()

printf("sum=%.2f\n",sum);}

求c語言全排列演算法

5樓:匿名使用者

宣告一陣列,用選擇法排序不就行了?

6樓:匿名使用者

#include

#include

#define n 9

int a[n] = ;

int*pt[n];

void permutation(int **, int);

int main(int argc, char *argv)void permutation(int **ipt, int pos)

while (shift < n-pos)tmp = pt_cpy[pos];

pt_cpy[pos] = pt_cpy[shift + pos];

pt_cpy[shift + pos] = tmp;

shift++;

permutation(pt_cpy, pos + 1);}}

求c語言題目,求C語言題目

c語言經典100題 程式1 題目 有1,2,3,4個數字,能組成多少個互不相同且無重複數字的三位數 都是多少 1.程式分析 可填在百位,十位,個位的數字都是1,2,3,4.組成所有的排列後再去 掉不滿足條件的排列.2.程式源 main 程式2 題目 企業發放的獎金根據利潤提成.利潤 i 低於或等於1...

求C語言大神,求C語言大神

自我程式設計 看不清,就看到檔案讀寫,如果 是完整的,你直接建專案,建空白檔案,把 複製進去,編譯執行就行了。別人執行對你也沒用,還是說這 有錯要改? 京山嘿嘿 bgucfhhjgjjjbvbjjb 法律規則的分類。劃分標準按照規則的內容不同,內容規定不同和腐敗授權性規定義務性規定按照規則內容的確定...

c語言 試題 求答案,C語言 試題 求答案

呵呵,問題比較簡單,屬於入門級的。1 輸入3個int型的整數,求其最大數。main int max int x,int y 2 輸入一批整數,統計出其中的整數和負數的個數,輸入0則結束。main printf d,d n i.j 2 閱讀如下程式,寫出程式執行結果 每題各5分,共20分 1 輸出 a...