WA了第五个点求助!!
查看原帖
WA了第五个点求助!!
457431
Li_wenjie楼主2021/8/27 11:29
#include<bits/stdc++.h>
using namespace std;
bool a[21][21],used[21],youzuidazhi=0;
int dilei[21],ans=0,n,way[21],k=0,path[21],mk;
bool check(int x)
{
	for(int i=1;i<=n;i++) 
	{
		if(a[x][i]&&!used[i])
			return false;
	}	
	return true;
}
void dfs(int d,int x)
{
	if(check(d))
	{
		if(x>ans)
		{
			youzuidazhi=1;
			ans=x;
			mk=k;	
			for(int i=1;i<=k;i++) 
			{	
				path[i]=way[i];
			}	
		}
		k=0;
		return;	
	}
	for(int i=1;i<=n;i++)
	{
		if(a[d][i]&&!used[i]&&i!=d) 
		{
			used[i]=1;
			way[++k]=i;
			dfs(i,x+dilei[i]);
			used[i]=0;
		}	
	}
	
}
int main() 
{
	int im;
	cin>>n;
	for(int i=1;i<=n;i++) cin>>dilei[i];
	for(int i=1;i<=n;i++)
		for(int j=i+1;j<=n;j++)
			{
				cin>>a[i][j];
			}
	for(int i=1;i<=n;i++) 
	{
		dfs(i,dilei[i]);
		if(youzuidazhi) im=i;
		youzuidazhi=0;
	}
	printf("%d ",im);
	for(int i=1;i<=mk;i++) printf("%d ",path[i]);
	printf("\n");
	printf("%d",ans);
}
2021/8/27 11:29
加载中...