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

时间:2022-05-27 15:08:17

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

//============================================================================
// 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;
}