백준: Class 4 - 15650, 15652, 15654, 15657, 15663, 15666
</br>
좀 쉬운 문제 풀면서 머리를 식히자
</br>
15650: N과 M (2)
https://www.acmicpc.net/problem/15652
void func(int now, int d){
if( d == m ){
for(int i = 0; i < m; i++){
cout << v[i] << ' ';
}
cout << '\n';
return;
}
for(int i = now+1; i <= n; i++){
v.push_back(i);
func(i, d+1);
v.pop_back();
}
}
이런 건 이제 바로 바로 짜 줘야 겠지
</br>
15652: N과 M (4)
https://www.acmicpc.net/problem/15652
void func(int now, int d){
if( d == m ){
for(int i = 0; i < m; i++){
cout << v[i] << ' ';
}
cout << '\n';
return;
}
for(int i = now; i <= n; i++){
v.push_back(i);
func(i, d+1);
v.pop_back();
}
}
틀린 그림 찾기
</br>
15654: N과 M (5)
https://www.acmicpc.net/problem/15654
void func(int now, int d){
if( d == m ){
for(int i = 0; i < m; i++){
cout << v[i] << ' ';
}
cout << '\n';
return;
}
visited[now] = 1;
for(int i = 0; i < n; i++){
if( visited[i] == 1 ) continue;
v.push_back(nums[i]);
func(i, d+1);
v.pop_back();
}
visited[now] = 0;
}
visited를 추가해서 지금 이미 방문한 상태면 넣지 않기
</br>
15657: N과 M (8)
https://www.acmicpc.net/problem/15657
void func(int now, int d){
if( d == m ){
for(int i = 0; i < m; i++){
cout << v[i] << ' ';
}
cout << '\n';
return;
}
for(int i = now; i < n; i++){
v.push_back(nums[i]);
func(i, d+1);
v.pop_back();
}
}
그냥 now부터 가능
</br>
15663: N과 M (9)
https://www.acmicpc.net/problem/15663
set< vector<int> > st;
void func(int now, int d){
if( d == m ){
st.insert(v);
return;
}
visited[now] = 1;
for(int i = 0; i < n; i++){
if( visited[i] == 1 ) continue;
v.push_back(nums[i]);
func(i, d+1);
v.pop_back();
}
visited[now] = 0;
}
중복 방지 위해서 set에 넣고 나중에 출력하기
</br>
15666: N과 M (12)
https://www.acmicpc.net/problem/15666
void func(int now, int d){
if( d == m ){
st.insert(v);
return;
}
for(int i = now; i < n; i++){
v.push_back(nums[i]);
func(i, d+1);
v.pop_back();
}
}
visited 빼고 now면 출력하기
</br>
날먹 코딩
쉬운 걸 푸니 기분이 좋다
</br>
댓글남기기