📄 数的划分个数和分划情况.cpp
字号:
#include <stdio.h>
int q(int n ,int m )
{
if( n< 1 || m < 1)
return 0 ;
if( n== 1 || m == 1 )
return 1 ;
if( n< m )
return q(n , n );
if( n == m )
return q(n ,m-1) +1 ;
return q(n, m-1 )+ q(n-m ,m );
}
int main()
{
int n;
while(scanf("%d", &n) )
{
printf("%d\n",q(n , n) ) ;
printf("%d\n", n ) ;
if (n == 1)
{
printf("1=1\n");
continue;
}
if (n == 2)
{
printf("2=1+1\n");
continue;
}
int *a = new int(n);
int top = 0;
a[0] = n - 1;
a[1] = 1;
top = 2;
int i;
do
{
printf("%d=%d", n, a[0]);
for (i = 1; i < top; i++)
{
printf("+%d", a[i]);
}
printf("\n");
int s = 0;
do
{
top -- ;
s += a[top];
} while (top >= 0 && a[top] == 1);
if (top == -1)
{
break;
}
int d = a[top] - 1;
if (d == 1)
{
while (s > 0)
{
a[top++] = 1;
s--;
}
}
else
{
do
{
a[top++] = d;
s -= d;
} while (s >= d);
if (s != 0)
{
a[top++] = s;
}
}
}while (1);
}
return 0 ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -