#include <stdio.h>
int p;
int count = 0;
int record[100];
void breakup(int n, int m, int i)
{
if (n == p && n != m)
{
printf("\n");
i = 0;
}
if (n == 1)
{
printf("1 ");
count++;
return;
}
else if (m == 1)
{
int i;
for (i = 0; i < n - 1; i++)
printf("1+");
printf("1 ");
count++;
return;
}
if (n < m)
{
breakup(n, n, i);
}
if (n == m)
{
int j;
printf("%d ", n);
count++;
for (j = 0; j < i; j++)
printf("%d+", record[j]);
breakup(n, m - 1, i);
}
if (n > m)
{
int j;
printf("%d+", m);
record[i++] = m;
breakup(n - m, m, i);
i--;
for (j = 0; j < i; j++)
printf("%d+", record[j]);
breakup(n, m - 1, i);
}
}
int main()
{
int n;
printf("请输入一个整数:");
scanf("%d",&n);
if (n > 0)
{
p = n;
printf("******************\n\n");
printf("具体划分如下\n");
breakup(n, n, 0);
printf("\n");
printf("\n******************\n\n");
printf("则该整数共有%d种划分\n",count);
count = 0;
}
return 0;
}
C语言整数划分详细代码
于 2024-03-14 09:30:14 首次发布