连续数字的全排列问题见以下代码,
#includeint n = 4; //几个数字的全排列 int P[10] = {0}; //存放当前排列顺序 bool hashTable[10] = {false}; //数字index是否被用 void generateP(int index){ if(index == n+1){ for(int i=1;i<=n;i++){ printf("%d", P[i]); //按顺序输出结果 } printf("n"); } for(int x=1;x<=n;x++){ if(hashTable[x]==false){ //从1开始,数字x没有被用过,则尝试装入 P[index] = x; //装入x hashTable[x] = true; //数字x已经被用了 generateP(index+1); //往下递归 hashTable[x] = false; //还原状态 } } } int main(){ generateP(1); return 0; }
如果是字母的全排列问题,则可以将字母与数字一一进行对应(连续字母进行散列),然后输出即可,不再赘述。



