生活随笔
收集整理的這篇文章主要介紹了
求全排列问题
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
基本思路就是:
1、判斷是否到達(dá)數(shù)組末尾,若是,輸出數(shù)組,返回。
2、否則依次取出片段數(shù)組的每個元素,對剩下的元素組成的片段數(shù)組再進(jìn)行排列。
注意,生成第二步的剩余片段數(shù)組的技巧是將每個元素與片段首個元素互換,這樣首個元素之后到數(shù)組末尾的連續(xù)元素 就是 剩余片段數(shù)組——當(dāng)然,互換完了還要互換回來,否則 第二步的剩余片段數(shù)組 的內(nèi)容就會混亂。
#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");?? }??
分享到:?
總結(jié)
以上是生活随笔為你收集整理的求全排列问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。