[CodeUp] #3008-일곱 난쟁이(탐색기반설계)

chrmqgozj·2022년 1월 27일
0

CodeUp

목록 보기
33/48
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

vector<int> num;
vector<int> visit_ans;

void find(int sum, int ans,vector<int> v){
    int cnt = 0;
    for(int i=0;i<9;i++){
        if(v[i]){
            cnt++;
        }
    }

    if(sum == ans && cnt==7){
        /*cout << "temp" << "\n";
        for(int i=0;i<9;i++){
            if(v[i]==1){
                cout << num[i] << "\n";
            }
        }
        cout << sum << "\n";
        
        cout << "\n\n\n\n";*/

        visit_ans = v;
        return;
    }

    for(int i=0;i<9;i++){
        
        if(v[i]==0 && sum < ans){
            v[i] = 1;
            find(sum+num[i],ans,v);
            v[i] = 0;
        }
        
    }
    return;
}

int compare(int x,int y){
    return x<y;
}

int main(){
    vector<int> v;

    num.resize(9,0);
    v.resize(9,0);
    visit_ans.resize(9,0);

    for(int i=0;i<9;i++){
        cin >> num[i];
    }

    sort(num.begin(),num.end(),compare);

    find(0,100,v);

    for(int i=0;i<9;i++){
        if(visit_ans[i]==1){
            cout << num[i] << "\n";
        }
    }

}

0개의 댓글

관련 채용 정보