728x90
반응형
nPr
서로 다른 n개의 원소에서 r개를 뽑아 한줄로 세우는 경우의 수
순서가 부여된 집합을 다른 순서로 뒤섞는 연산이다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> numVector;
vector<vector<int>> permutationVector;
void swap(int a, int b){
int temp = numVector[a];
numVector[a] = numVector[b];
numVector[b] = temp;
}
void permutation(int size, int index){
if(index == size - 1){
permutationVector.push_back(numVector);
}
else{
for(int i = index; i < size; i++){
swap(i, index);
permutation(size, index + 1);
swap(i, index);
}
}
}
int main(void){
int count;
cin >> count;
for(int i = 0; i < count; i++){
numVector.push_back(i + 1);
}
permutation(count, 0);
sort(permutationVector.begin(), permutationVector.end());
for(int i = 0; i < permutationVector.size(); i++){
for(int j = 0; j < count; j++){
cout << permutationVector[i][j] << " ";
}
cout << "\n";
}
}
https://github.com/jeongdaeun98/algorithm/blob/master/2020/20102802.cpp
반응형
'algorithm' 카테고리의 다른 글
[algorithm] 백준 - N과 M (8) (0) | 2020.10.29 |
---|---|
[algorithm] 백준- N과 M(7) (0) | 2020.10.29 |
[algorithm] 백준 - 이전 순열 (0) | 2020.10.29 |
[algorithm] 숨바꼭질 3 (0) | 2020.10.29 |
[algorithm] 테트로미노 (0) | 2020.10.28 |