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...