본문 바로가기
알고리즘

C++ division 재귀함수

by Chars4785 2019. 2. 27.

예제 입력

5

예제 출력

4+1
3+2
3+1+1
2+2+1
2+1+1+1
1+1+1+1+1
6


20 이하 숫자만 줍니다.



#include <iostream>

using namespace std;

int n;
int ary[21];
int num[20] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
int k;

void dfs(int dp,int count)
{
int sum = 0;
for (int i = 0;i < n;i++)
sum += ary[i];

if (sum == n)
{
for (int i = 0;i < dp;i++)
{
if(i == dp-1) cout<< ary[i];
else cout << ary[i]<<"+";

}

k++;
cout << endl;
return;
}
else if (sum > n) {
return;
}else{

for (int i = count;i >= 0;i--)
{//4부터
ary[dp] = num[i];
dfs(dp+1,i);
ary[dp] =0;
}

}


}

int main() {

cin >> n;
dfs(0, n-2);
cout<<k<<endl;
return 0;
}



'알고리즘' 카테고리의 다른 글

Dessert  (0) 2019.05.10
Java 탑  (0) 2019.04.01
C++ Tobin  (0) 2019.02.18
C++ 큰 수 더하기,빼기, 곱하기  (0) 2019.02.08
C++ 소수 ( 쉽게 구하는 방법 )  (0) 2019.02.05

댓글