728x90
▶문제 : 덧셈, 뺄셈으로 n 만들기 (codeup.kr)
▶코드 작성
#include <stdio.h>
int n, m, arr[21], count;
void func(int i, int sum)//+,-따로 호출하는 함수
{
if (i < n) {//i==n이 될 때까지
func(i + 1, sum + arr[i]);//다음 값인 arr[i]을 더해줌
func(i + 1, sum - arr[i]);//다음 값인 arr[i]을 빼줌
}
else if (sum == m) count++;//배열의 모든 수를 계산한 값 sum이 m일때
}
int main()
{
scanf("%d %d", &m, &n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
func(0, 0);//재귀함수 호출
printf("%d", count);
return 0;
}
▶해석
재귀함수를 이용해 배열의 값을 따로따로 더하거나 빼서 모든 경우의 수를 계산해 배열의 합 sum이 m일 때 개수를 세주었다.
728x90
'코드업(codeup) > C' 카테고리의 다른 글
코드업(codeup) 3170 : 기억력 테스트 9 C언어 (0) | 2022.01.10 |
---|---|
코드업(codeup) 1430 : 기억력 테스트 2 C언어 (0) | 2022.01.10 |
코드업(codeup) 2640 : n의 k승 구하기 2 C언어 (0) | 2022.01.05 |
코드업(codeup) 2055 : 두 수의 약수 구하기 C언어 (0) | 2022.01.04 |
코드업(codeup) 3710 : 369 게임 3 (Large Test Case) C언어 (0) | 2021.12.31 |
댓글