日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

求全排列问题

發(fā)布時間:2025/4/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 求全排列问题 小編覺得挺不錯的,現(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){??
  • ???????????????//輸出排列結(jié)果???
  • ???????????????for?(j?=?0;?j?<=?end;?j++)??
  • ???????????????????putchar(a[j]);??
  • ???????????????putchar('/n');??
  • ???????????????return;??
  • ?????}?else{??
  • ??????????????
  • ????????????for?(i?=?start;?i?<=?end;?i++){??
  • ????????????????//將數(shù)組片段的各元素與首元素交換???
  • ????????????????swapArrayElements(a,?start,?i);??
  • ??????????????????
  • ????????????????//對交換后的,去掉首元素的數(shù)組片段進(jìn)行全排列???
  • ????????????????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)容還不錯,歡迎將生活随笔推薦給好友。