生活随笔
收集整理的這篇文章主要介紹了
求全排列问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基本思路就是:
1、判斷是否到達數組末尾,若是,輸出數組,返回。
2、否則依次取出片段數組的每個元素,對剩下的元素組成的片段數組再進行排列。
注意,生成第二步的剩余片段數組的技巧是將每個元素與片段首個元素互換,這樣首個元素之后到數組末尾的連續元素 就是 剩余片段數組——當然,互換完了還要互換回來,否則 第二步的剩余片段數組 的內容就會混亂。
#include?<stdio.h>?? #include?<stdlib.h>?? void?swapArrayElements(char?a[],?int?lhs,?int?rhs)?? {?? ?????char?temp;?? ?????temp?=?a[lhs];?? ?????a[lhs]?=?a[rhs];?? ?????a[rhs]?=?temp;?? }?? void?perm(char?a[],?int?start,?int?end)?? {?? ?????int?i,?j;?? ?????if?(start?==?end){?? ????????????????? ???????????????for?(j?=?0;?j?<=?end;?j++)?? ???????????????????putchar(a[j]);?? ???????????????putchar('/n');?? ???????????????return;?? ?????}?else{?? ?????????????? ????????????for?(i?=?start;?i?<=?end;?i++){?? ?????????????????? ????????????????swapArrayElements(a,?start,?i);?? ?????????????????? ?????????????????? ????????????????perm(a,?start+1,?end);?? ?????????????????? ?????????????????? ????????????????swapArrayElements(a,?start,?i);?? ????????????}?? ?????}?? }?? main()?? {?? ??????char?a[]?=?{'A',?'B',?'C',?'D'};?? ??????perm(a,?0,?3);?? ??????system("pause");?? }??
分享到:?
總結
以上是生活随笔為你收集整理的求全排列问题的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。