#include <stdio.h>
int partitions=0;
int history[40]={0,};
void p(int n, int k, int level) {
int i;
if(n<0) return;
if(n==0) {
partitions+=1;
printf("%d : ", partitions);
for(i=0;i<level-1;i+=1) {
printf("%d + ", history[i]);
}
printf("%d\n", history[level-1]);
return;
}
for(i=1;i<=k;i+=1) {
history[level]=i;
p(n-i, i, level+1);
}
}
int main() {
int i, n=5;
scanf("%d", &n);
for(i=1;i<=n;i+=1) {
history[0]=i;
p(n-i, i, 1);
}
printf("partitions = %d\n", partitions);
return 0;
}
'c·c++ > c 프로그래밍' 카테고리의 다른 글
c언어 다음에 무슨공부를 할까요? (0) | 2014.03.05 |
---|---|
변수의 주소가 컴파일할때마다 바뀌는 이유가 뭔가요? (0) | 2014.03.05 |
windows구조와 원리 - OS를 관통하는 프로그래밍의 원리 (0) | 2014.02.26 |
vc++ 2010 LNK1123: coff 변환오류 (0) | 2014.02.26 |
c언어란 무엇인가요? - c언어 독학 가능한가요? (0) | 2014.02.22 |