唐沉沉 发表于 2018-10-27 16:52:00

求大神

将你输入的一个数字分解,输出它能分解的所有形式(不计算本身),并且不可以重复:
不能出现;
5=1+1+1+25=2+1+1+1 只能有一个
5=5 不能出现


输入格式
n(1<=n<=100)
输出格式
n=m+m+m……(1<=m<n)
……

输入
5
输出
5=1+1+1+1+1
5=1+1+1+2
5=1+1+3
5=1+2+2
5=1+4
5=2+3

输入
6
输出
6=1+1+1+1+1+1
6=1+1+1+1+2
6=1+1+1+3
6=1+1+2+2
6=1+1+4
6=1+2+3
6=1+5
6=2+2+2
6=2+4
6=3+3
{:5_107:}

claws0n 发表于 2018-10-27 17:50:00

#include <stdio.h>

void decompose(int n, int arr[], int k, const int t)
{
    if(n <= 0)
    {
        if(arr == t)
          return;
        printf("%d=", t);
        for(int i = 0; i < k-1; i++)
            printf("%d+", arr);
        printf("%d\n", arr);
        return;
    }
       
    for(int i = n; i > 0; i--)
    {
        if(k > 0 && i > arr)
          continue;
        arr = i;
      decompose(n-i, arr, k+1, t);
    }
}


int main()
{
    int a;
    int n;
    scanf("%d", &n);
    decompose(n, a, 0, n);

    return 0;
}
页: [1]
查看完整版本: 求大神