본문 바로가기

Study/algorithms

[백준] 2798 블랙잭

반응형

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

발생할 수있는 모든 경우의 수를 조합으로 찾아서 푼다. 찾는 과정에서 조건을 걸어서 더 찾지 않아도 되는 구간은 넘어가게 했다.

package main

import (
	"bufio"
	"fmt"
	"os"
)

var reader = bufio.NewReader(os.Stdin)
var writer = bufio.NewWriter(os.Stdout)

func printf(f string, a ...interface{}) { fmt.Fprintf(writer, f, a...) }
func scanf(f string, a ...interface{})  { fmt.Fscanf(reader, f, a...) }

var n, m, result int
var card [102]int

func combi(start, num, sum int) {
	if m < sum || num == 0 || n-start < num {
		return
	}
	if num == 1 && sum > result {
		result = sum
	}

	for i := start + 1; i < n; i++ {
		combi(i, num-1, sum+card[i])
	}
}

func main() {

	scanf("%d %d\n", &n, &m)

	for i := 0; i < n; i++ {
		scanf("%d", &card[i])
	}

	for i := 0; i <= n-3; i++ {
		combi(i, 3, card[i])
	}
	printf("%d\n", result)
	writer.Flush()
}

 

'Study > algorithms' 카테고리의 다른 글

[백준] 7568 덩치  (0) 2020.01.22
[백준] 2231 분해합  (0) 2020.01.21
[백준] 11729 하노이 탑 이동 순서  (0) 2020.01.20
[백준] 2447 별 찍기 - 10  (0) 2020.01.19
[백준] 10870 피보나치수 5  (0) 2020.01.19