摘要:
问题出自linux C 一站式编程网站,定义一个数组,编程打印它的全排列程序的主要思路是:把第1个数换到最前面来(本来就在最前面),准备打印1xx,再对后两个数2和3做全排列。把第2个数换到最前面来,准备打印2xx,再对后两个数1和3做全排列。把第3个数换到最前面来,准备打印3xx,再对后两个数1和2做全排列。可见这是一个递归的过程,把对整个序列做全排列的问题归结为对它的子序列做全排列的问题,注意我没有描述Base Case怎么处理,你需要自己想。你的程序要具有通用性,如果改变了N和数组a的定义(比如改成4个数的数组),其它代码不需要修改就可以做4个数的全排列(共24种排列)。 解题过程: ( 阅读全文