这段代码怎么优化啊??答案一直显示时间超时。

#include
using namespace std;
int n;
int a[1000];

void dfs(int index){
int sum=0;
for(int i=1;i sum+=a[i];
}
if(sum==n){
for(int i=1;i cout }
cout return;
}
if(index>n){
return;

}
for(int i=1;i if(i>=a[index-1]){

a[index]=i;

dfs(index+1);
}
}
}
int main(){
cin>>n;
dfs(1);
return 0;
}

dfs爆搜一般都是剪枝的优化,你不知道剪枝可以百度一下