1. 程式人生 > >7-1 整數分解為若干項之和(20 分)(dfs)

7-1 整數分解為若干項之和(20 分)(dfs)

這裡寫圖片描述
思路:不帶標記的dfs,只要沒有超過和就不斷dfs直到超過了之後向前回溯。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int a[40],k,n;
int num;
int sum;
void dfs(int x)
{
    int i;
    if(n == sum)
    {
        k++;
        printf("%d=%d",n,a[0]);
        for(i=1;i<num;i++)
        {
            printf
("+%d",a[i]); } if(num == 1|| k%4==0) printf("\n"); else printf(";"); } if(sum > n) return ; for(i=x;i<=n;i++) { a[num++] = i; sum += i; dfs(i); sum -= i; num--; } } int main() { num = 0
; sum = 0; k = 0; scanf("%d",&n); dfs(1); return 0; }