예제 입력
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 |
댓글