SDUT 1263 자연 분할 반복
자연수의 분할 문제
Time Limit: 1000ms Memory limit: 65536K여기를 누르세요^_^
제목 설명
자연수 n을 입력한 후에 그것을 몇 개의 수에 덧붙이는 형식으로 나누어 덧셈 연산에 참여하는 수는 중복될 수 있다.
입력
분할할 자연수 n을 나타내는 정수 n만 입력합니다.
출력
출력 예시!
예제 입력
7
예제 출력
1+6
1+1+5
1+1+1+4
1+1+1+1+3
1+1+1+1+1+2
1+1+1+1+1+1+1
1+1+1+2+2
1+1+2+3
1+2+4
1+2+2+2
1+3+3
2+5
2+2+3
3+4
#include
using namespace std;
int a[10000];
int print(int n)
{
for(int i=1; i<=n; i++)
{
if(i!=1)
printf("+");
printf("%d",a[i]);
}
printf("
");
}
int DFS(int n,int ans) //ans , ,
{
for(int i=1; i<=n/2; i++) //
{
if(i>=a[ans-1]) //
{
a[ans]=i;
a[ans+1]=n-i;
print(ans+1);
DFS(n-i,ans+1);
}
}
}
int main()
{
int n;
while(~scanf("%d",&n))
{
a[0]=0;
DFS(n,1);
}
}
..num는 표현식이 얼마나 되는지 나타낸다
#include
using namespace std;
int k=0;
int num=0;
int DFS(int x,int y,int ans)
{
if(x