C语言整数划分详细代码

#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;
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值