试确定函数P e r m 共执行了多少次S w a p操作?
//本函数是输出所有可能的排列。
template<class T>void Perm(T list[], int k, int m){ //生成list [k:m ]的所有排列方式int i,count=0;if (k == m) {//输出一个排列方式 for (int i = 0; i <= m; i++) cout << list [i]; cout << endl;}else // list[k:m ]有多个排列方式// 递归地产生这些排列方式for (i=k; i <= m; i++) { swap (list[k], list[i]); Perm (list, k+1, m); swap (list [k], list [i]); count+=2;}}
#include <iostream>using namespace std;int count = 0;template<class T>void Perm(T list[], int k, int m){ //生成list [k:m ]的所有排列方式int i;if (k == m) {//输出一个排列方式 for (int i = 0; i <= m; i++) cout << list [i]; cout << endl;}else // list[k:m ]有多个排列方式// 递归地产生这些排列方式for (i=k; i <= m; i++) { swap (list[k], list[i]); Perm (list, k+1, m); swap (list [k], list [i]); count+=2;}}int main(){ int list[7] = {1,2,3,4,5,6}; Perm(list, 2, 5); printf("%d\n", count); return 0;}