RE求救
查看原帖
RE求救
117192
无产者万岁楼主2020/8/24 18:40
#include <bits/stdc++.h>
using namespace std;
int n,t,a[501],k[501],q[501],minn=INT_MAX,cnt=1;
void dfs(int p,int time,int b)
{
	if(p>cnt)
	{
		minn=min(time,minn);
		return;
	}
	if(time>minn)
		return;
	if(k[p-1]+t>k[p]&&b==1)
		dfs(p+1,time,0);
	int ans=0;
	for(int i=1;a[i]<=k[p];i++)
		if(q[i]==0)
		{
			q[i]=1;
			ans+=k[p]-a[i];
		}
	dfs(p+1,time+ans,1);
	for(int i=1;a[i]<=k[p];i++)
		q[i]=0;
	dfs(p+1,time,0);
	cout<<p<<" "<<time<<" "<<b;	
}
int main()
{
	cin>>n>>t;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	sort(a+1,a+n+1);
	k[1]=a[1];
	for(int i=2;i<=n;i++)
		if(a[i]!=a[i-1])
			k[++cnt]=a[i];
	dfs(1,0,0);
	cout<<minn;
	return 0;
} 

这也会爆栈???/疑问

2020/8/24 18:40
加载中...