본문 바로가기
개발자/알고리즘

[BOJ] 1182번 부분수열의 합

by D , 2019. 9. 17.
반응형


#include < iostream >
#include < vector >
#include < algorithm >

using namespace std;

int main()
{
    int n,m;
    cin>>n>>m;

    vector q;

    for(int i=0;i<n;i++){
        int temp;
        cin>>temp;
        q.push_back(temp);
    }

    int caseNum=0;
    for(int i=1;i<=n;i++){
        vector ind;

        for(int j=0;j<n;j++){
            if(j<i){
                ind.push_back(1);
            }else{
                ind.push_back(0);
            }
        }

        do{
            int sum=0;

            for(int k=0;k<ind.size();k++){
                if(ind[k] == 1)
                {
                    sum += q[k];
                }
            }
            if(sum == m){
                caseNum++;
            }

        }while(prev_permutation(ind.begin(),ind.end()));

        ind.clear();
    }

    cout<<caseNum;

    return 0;
}

 

https://www.acmicpc.net/problem/1182

 

1182번: 부분수열의 합

첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다.

www.acmicpc.net

 

반응형

'개발자 > 알고리즘' 카테고리의 다른 글

[BOJ] 15654번 N과 M(5) - 빠른 입출력  (0) 2019.09.19
[BOJ] 14501번 퇴사  (0) 2019.09.18
[BOJ] 1759번 암호 만들기  (0) 2019.09.17
[BOJ] 14888번 연산자 끼워넣기  (0) 2019.09.17
[BOJ] 6603번 로또  (0) 2019.09.12