阅读背景:

整数分解为若干项之和 - PAT

来源:互联网 

深度搜索,一开始没有想到,说明基本功还是不够啊,加油

//============================================================================
// Name        : PTA.cpp
// Author      : pprp
// Version     : 1.0
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>

using namespace std;

int N;
int a[1000];
int top = -1;
int sum = 0;
int cnt = 0;

void division(int i){
    if(sum == N){
        cnt++;
        cout << N <<"=";
        for(int k = 0 ; k < top ; k++){
            printf("%d+",a[k]);
        }
        if(cnt % 4 == 0 || a[top] == N){
            printf("%d\n",a[top]);
        }else
        {
            printf("%d;",a[top]);
        }
        return ;
    }
    if(sum > N)return ;
    for(int j = i ; j <= N; j++){
        a[++top] = j;
        sum += j;
        division(j);
        sum -= j;
        top--;
    }
}

int main() {
    cin >> N;
    division(1);
    return 0;
}//================



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: