1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| #include<iostream> using namespace std; const int maxn=11; int n,p[maxn],hashTable[maxn]={false}; void generateP(int index) { if (index==n+1) { for(int i = 1; i <=n; i++) { cout<<p[i]; } cout<<endl; return ; } for(int x = 1; x <=n; x++) { if(hashTable[x]==false) { p[index]=x; hashTable[x]=true; generateP(index+1); hashTable[x]=false; } }
} int main() { n=3; generateP(1); return 0; }
|
这个问题就是递归条件如何使用是很大的问题。递归的两个条件:递归边界和递归式。