#搜索与回溯 vol.01 n个整数中取出r个进行排列
题目
设有n个整数的集合{1,2,···,n}
从中任意取出r个数进行排列(r < n)
试求出所有排列的组合
#include <iostream>
#include <iomanip>
using namespace std;
int num = 0, a[10001] = {0}, n, r;
bool b[10001] = {0};
int search(int);
int print();
int main(){
cin >> n >> r;
search(1);
cout << "Number: " << num << endl;
}
int search(int k){
for(int i = 1; i <= n; i ++){
if(!b[i]){
a[k] = i;
b[i] = 1;
if(k == r){
print();
}
else{
search(k + 1);
}
b[i] = 0;
}
}
}
int print(){
num ++;
for(int i = 1; i <= r; i ++){
cout << setw(3) << a[i];
}
cout << endl;
}

浙公网安备 33010602011771号