A的迷迷糊糊。。。
查看原帖
A的迷迷糊糊。。。
654763
smallpeople楼主2023/11/23 19:14

这是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;
}

我寻思这俩差别不大啊?有没有大佬帮我看看,求

2023/11/23 19:14
加载中...