全排列算法的c++实现

 1 void cp(int n, int*A, int cur) {//n表示总共要排几个数,A来记录已经排好的数,cur表示正在排的是第几个数
 2     if (cur == n) {//说明n-1已经排好 输出
 3         for (int i = 0; i < n; i++)cout << A[i];
 4         cout << endl;
 5     }
 6     else for (int i = 1; i <= n; i++) {
 7         int ok = 1;
 8         for (int j = 0; j < cur; j++)//如果排列中已经有这个数 跳过
 9             if (A[j] == i)ok = 0;
10         if (ok) {
11             A[cur] = i;
12             cp(n, A, cur + 1);
13         }
14     }
15 }

主要是对int *A有了比较深刻的认识!!!!!!

posted on 2017-11-25 13:20  zqs1999  阅读(2746)  评论(0)    收藏  举报