티스토리 뷰
재귀로 모든 조합을 만들어 본다. 조합을 만드는 도중 합이 K를 넘어가면 더 이상 만들지 않는다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #include <cstdio> int t,n,k,a[20],ans; void go(int i,int sum) { if(sum>k || i==n) { if(sum==k) ans++; return; } go(i+1,sum+a[i]); go(i+1,sum); } int main() { scanf("%d",&t); for(int T=1;T<=t;T++) { scanf("%d %d",&n,&k); for(int i=0;i<n;i++) scanf("%d",&a[i]); go(0,0); printf("#%d %d\n",T,ans); ans=0; } return 0; } | cs |
'Algorithm > SW Expert Academy' 카테고리의 다른 글
3307 최장 증가 부분 수열 (0) | 2018.04.11 |
---|---|
3809 화섭이의 정수 나열 (0) | 2018.04.11 |
1206 View (0) | 2018.03.28 |
1215 회문1 (0) | 2018.03.28 |
4047 영준이의 카드 카운팅 (0) | 2018.03.27 |