Data_Structure/Vorlesungen/DS/Beispiele/partition-integer.c

51 lines
1.8 KiB
C
Raw Permalink Normal View History

2025-01-20 21:25:33 +08:00
/*
Program: partition-integer.c (Report comments/bugs to chikh@yuntech.edu.tw)
Function: <EFBFBD>H<EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD><EFBFBD><EFBFBD>Y<EFBFBD>@<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶi<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΡA<EFBFBD>æC<EFBFBD>X<EFBFBD>Ҧ<EFBFBD><EFBFBD>i<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΧΦ<EFBFBD><EFBFBD>C<EFBFBD>Ҧp<EFBFBD>G4 = 4+0
= 1+3 = 2+2 = 1+1+2 = 1+1+1+1<EFBFBD>@<EFBFBD><EFBFBD>5<EFBFBD>ؤ<EFBFBD><EFBFBD>k<EFBFBD>C
<EFBFBD>B<EFBFBD>@<EFBFBD>z<EFBFBD><EFBFBD><EFBFBD>G<EFBFBD>]<EFBFBD>ݤ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>Ƭ<EFBFBD>n<EFBFBD>Bmax<EFBFBD><EFBFBD><EFBFBD>̤j<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(max<=n<EFBFBD>A<EFBFBD>Φ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>C<EFBFBD>@<EFBFBD>Ӥ<EFBFBD><EFBFBD><EFBFBD>i<=max)<EFBFBD>A
<EFBFBD><EFBFBD>1<EFBFBD>}<EFBFBD>l<EFBFBD><EFBFBD><EFBFBD>W<EFBFBD>M<EFBFBD>w<EFBFBD>@<EFBFBD>ƭ<EFBFBD>i<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ұĤ<EFBFBD><EFBFBD>Ѥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>ç<EFBFBD>i<EFBFBD>s<EFBFBD>J<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>A<EFBFBD><EFBFBD><EFBFBD>ɫݤ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ƧY<EFBFBD>ܦ<EFBFBD>
(n-i)<EFBFBD>A<EFBFBD>p<EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>̤W<EFBFBD>z<EFBFBD>޿<EFBFBD><EFBFBD>~<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΡA<EFBFBD><EFBFBD><EFBFBD>ܵL<EFBFBD>k<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(IJ<EFBFBD><EFBFBD>)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD>@<EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>Y<EFBFBD><EFBFBD><EFBFBD>L<EFBFBD>h<EFBFBD>x<EFBFBD>s
<EFBFBD>b<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD>@<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>Ө<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܩ<EFBFBD><EFBFBD>ù<EFBFBD><EFBFBD>C<EFBFBD>C<EFBFBD>@<EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>N<EFBFBD><EFBFBD><EFBFBD>ۤ@<EFBFBD>سs<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τ<EFBFBD>ȧi
<EFBFBD>@<EFBFBD>q<EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>{<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>^<EFBFBD>̪ܳ<EFBFBD><EFBFBD>Ұʳs<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τ<EFBFBD><EFBFBD>W<EFBFBD>h<EFBFBD>y<EFBFBD>{<EFBFBD><EFBFBD><EFBFBD>m<EFBFBD>A<EFBFBD>A<EFBFBD>~<EFBFBD><EFBFBD><EFBFBD>B<EFBFBD>z<EFBFBD><EFBFBD><EFBFBD>M<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>Ҧ<EFBFBD><EFBFBD>i<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τ<EFBFBD><EFBFBD><EFBFBD>w<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>L<EFBFBD>A<EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>D<EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Notes: 1) <EFBFBD>d<EFBFBD>N<EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><EFBFBD><EFBFBD>ƪ<EFBFBD><EFBFBD>I<EFBFBD>s<EFBFBD><EFBFBD>B<EFBFBD>ѼƻP<EFBFBD><EFBFBD><EFBFBD>ǡA<EFBFBD><EFBFBD><EFBFBD>I<EFBFBD>p<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>t<EFBFBD>`<EFBFBD>N<EFBFBD>@<EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2) <EFBFBD>B<EFBFBD>ΰ<EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD>I<EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>S<EFBFBD>ʡA<EFBFBD>v<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ιL<EFBFBD>{<EFBFBD>ұĤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѥ<EFBFBD><EFBFBD><EFBFBD>
3) <EFBFBD>ѦҨíק<EFBFBD> https://bit.ly/3dC2mlX <20>Ҹ<EFBFBD><D2B8><EFBFBD><EFBFBD><EFBFBD>
*/
#include <stdio.h>
int indx = 0; /* <20><><EFBFBD>ޡA<DEA1><41><EFBFBD>ܰ<EFBFBD><DCB0>|<7C><><EFBFBD>ݤ<EFBFBD><DDA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m */
int element[100] = {0}; /* <20>H<EFBFBD>}<7D>C<EFBFBD><43><EFBFBD>@<40><><EFBFBD>|<7C><><EFBFBD>c */
void printPartitions(int n, int max, int addend) /* n:<3A>ݤ<EFBFBD><DDA4>Ϊ<EFBFBD><CEAA>ơBmax:<3A>̤j<CCA4><6A><EFBFBD><EFBFBD><EFBFBD>Baddend:<3A>ұĥΪ<C4A5><CEAA><EFBFBD><EFBFBD>Ѥ<EFBFBD><D1A4><EFBFBD> */
{
int i;
element[indx++] = addend; /* <20>۷<EFBFBD><DBB7><EFBFBD>push()<29>ʧ@ */
if (n == 0) { /* <20><77><C4B2><EFBFBD>B<EFBFBD>L<EFBFBD>k<EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD> */
for (i = indx-1; i > 0; i--) /* <20><><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD>@<40>L<EFBFBD>X */
printf("%d ",element[i]);
printf("\n");
}
else /* n > 0<>A<EFBFBD>N<EFBFBD><4E><EFBFBD>۩|<7C>i<EFBFBD>~<7E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
for (i = 1; i <= max && i <= n; i++) /* <20><>1<EFBFBD>}<7D>l<EFBFBD><6C><EFBFBD>W<EFBFBD>M<EFBFBD>w<EFBFBD>@<40>ƭ<EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ұĤ<D2B1><C4A4>Ѥ<EFBFBD><D1A4><EFBFBD><EFBFBD>A<EFBFBD>ݤ<EFBFBD><DDA4>Ϊ<EFBFBD><CEAA>ƧY<C6A7>ܦ<EFBFBD>(n-i) */
printPartitions(n-i,i,i); //printPartitions(target-i,i,element[indx++]=i);
indx--; /* <20><><EFBFBD>Ppop()<29>ʧ@ */
}
int main()
{
int n;
printf("<EFBFBD><EFBFBD><EFBFBD>J<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ==> ");
scanf("%d",&n);
printf("<EFBFBD>i<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τ<EFBFBD>p<EFBFBD>U<EFBFBD>G\n");
printPartitions(n,n,0);
return 0;
}