본문 바로가기
카테고리 없음

15666 N과M(12) (C++)

by IT learning 2021. 4. 26.
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

댓글

IT_learning's Commit