整数分解为若干项之和 - 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;
}
代码改变世界