can someone give me the c code for integer partitoning
i.e. for the integer 4 u must print
4
3 1
2 2
2 1 1
1 1 1 1
I wrote the following code interpreting a java code, but it isn,t working, I want much simpler version of the following code.
Code:
#include <stdio.h>
#include <math.h>
#include <string.h>
void partition (int n, int max, char prefix[]);
char * processAnswer (char prefix[], int n);
int main ()
{
int n;
int flag;
while (1){
printf ("Enter the number (integer): ");
flag = scanf ("%d", &n);
if (flag==0)
{
printf ("Not an integer");
}
else if (flag == 1)
{
break;
}
}
partition (n, n, "");
int x;
scanf ("%d", &x);
return 0;
}
void partition (int n, int max, char prefix[])
{
if (n==0)
{
printf ("%s", prefix);
return;
}
int min;
int i;
char * ptr;
if (n<max)
{
min = n;
}
else
{
min = max;
}
for (i=0; i>=min; i+-1)
{
char * ch = processAnswer (prefix, i);
partition ( (n-i), i, ch );
}
}
char * processAnswer (char prefix[], int n)
{
char ans[100];
char ch;
int i=0;
ch=prefix[0];
while (ch!='\0')
{
ans[i] = ch;
i+=1;
ch=prefix[i];
}
ans[i] = ' ';
i+=1;
ans[i] = (char) n;
i+=1;
ans[i] = '\0';
char * ptr = &ans[0];
return ptr;
}
Thankz in advance