728x90
중복되는 숫자 제거하고, 점점 올라가는 숫자대로 출력해야 한다.
아니 근데 처음에 내 힘으로 푼 문제가 있다. 그 코드는 잘 돌아가고, 여러가지 반례를 들고 와서 해보는데도 잘 된다.
근데 15퍼를넘질 못했다.
그래서 저번에 참고했던 코드를 들고와서 다시 편집했ㅆ다.
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
int n,m;
int board[10];
int arr[10];
int isused[10];
void func(int k,int index) {
if(k == m) {
for(int i = 0; i < m; i++) {
cout << arr[i] << ' ';
}
cout << endl;
return; // 리턴을 해서 바로 윗 단계로 올라감
}
int used[10000] = {0};
for(int i = index; i < n; i++) {
if(used[board[i]] == 0){
used[board[i]] = 1;
arr[k] = board[i];
func(k+1, i);
}
}
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
for(int i = 0; i < n; i++) {
cin >> board[i];
}
sort(board,board+n);
func(0,0);
}
ㅇ 이전코드는 왜 안되는지 의문이지만, 이 코드는 잘만 채점된다..ㅡㅡ..어떤 반례든 다 통과해서 그런거겠지만, 내 코드의 반례도 한번 많이 들고와서 테스트 해봐야겠다.
728x90
댓글