这是Ac代码:
#include<bits/stdc++.h>
using namespace std;
int p[100],sum,n;
void print(int a)
{
for(int i = 1;i < a - 1;i ++)
cout<<p[i]<<"+";
cout<<p[a - 1]<<endl;
}
int dfs(int u,int v)
{
for(int i = v;sum <= n;i ++)
{
if(i == n)break;
p[u] = i;
u ++;
sum += i;
//cout<<sum<<" ";
if(sum == n)print(u);
else if(sum < n)dfs(u,i);
sum -= i;
u --;
}
}
int main()
{
cin>>n;
dfs(1,1);
return 0;
}
下面是20分的:
#include<bits/stdc++.h>
using namespace std;
int p[100],sum,n;
void print(int a)
{
for(int i = 1;i < a - 1;i ++)
cout<<p[i]<<"+";
cout<<p[a - 1]<<endl;
}
int dfs(int u)
{
for(int i = 1;sum <= n;i ++)
{
if(i == n)break;
if(p[u] - 1 <= i)
{
p[u] = i;
u ++;
sum += i;
//cout<<sum<<" ";
if(sum == n)print(u);
else if(sum < n)dfs(u);
sum -= i;
u --;
}
}
}
int main()
{
cin>>n;
dfs(1);
return 0;
}
我寻思这俩差别不大啊?有没有大佬帮我看看,求