dfs(路径用aaa数组存的)错误实在检查不出来 蒟蒻求助
查看原帖
dfs(路径用aaa数组存的)错误实在检查不出来 蒟蒻求助
493738
hsx_std楼主2021/5/7 21:40
#include<bits/stdc++.h>
using namespace std;
int n;
int a[25];
int aaa[25];
int aaaxb=0;
int r[25][25];
int ans=0;
void dfs(int pos,int xzh,int* v)
{
	int s=0;
	for(int i=1;i<=n-pos;i++)
	{
		v[pos]=1;
		if(r[pos][i]==1)
		{
			dfs(i+pos,xzh+a[pos],v);
			s=1;
		}
		v[pos]=0;
	}
	if(s==0)
	{
		v[pos]=1;
		if(xzh+a[pos]>ans)
		{
			ans=xzh+a[pos];
			for(int i=1;i<=n;i++)
			{
				if(v[i]==1)
				{
					aaa[aaaxb]=i;
				}
				aaaxb++;
			}
			aaaxb=0;
		}
		return;
	}
}
int main()
{
	cin>>n;
	memset(aaa,0,sizeof(aaa));
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	for(int i=0;i<=21;i++)
	{
		for(int j=0;j<=21;j++)
		{
			r[i][j]=0;
		}
	}
	for(int i=1;i<n;i++)
	{
		for(int j=1;j<=n-i;j++)
		{
			cin>>r[i][j];
		}
	}
	int sss[25];
	memset(sss,0,sizeof(sss));
	for(int i=1;i<=n;i++)
	{
		dfs(i,0,sss);
	}
	for(int i=1;i<=25;i++)
	{
		if(aaa[i]==0)	break;
		cout<<aaa[i]<<" ";
	}
	cout<<endl;
	cout<<ans<<endl;
	return 0;
}
2021/5/7 21:40
加载中...