100但是有一个点没过
查看原帖
100但是有一个点没过
719140
only_joker楼主2023/10/11 08:26

能有大佬帮忙找找问题吗(不太想浪费下载次数),悬一关

#include<bits/stdc++.h>
using namespace std;
int n,a[25],b[25][25],ma,s,ss;
long long maxn;
vector<int> ans[25];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i]; 
		ans[i].push_back(i);
	}
	maxn=a[n];
	for(int i=1;i<=n-1;i++)
	{
		for(int j=1;j<=n-i;j++)
		{
			cin>>b[i][j];
		}
	}
	for(int i=n-1;i>=1;i--)
	{
		ma=-1;
		for(int j=1;j<=n-i;j++)
		{
			if(b[i][j]==1) 
			{
//				ma=max(ma,a[i+j]);
				if(a[i+j]>ma)
				{
					ma=a[i+j];
					ss=i+j;
				}
			}
		}
		for(int o=0;o<ans[ss].size();o++)
		{
			if(ss==0) break;
			ans[i].push_back(ans[ss][o]);
		}
		if(ma!=-1) a[i]+=ma;
//		maxn=max(a[i],maxn);
		if(a[i]>maxn)
		{
			maxn=a[i];
			s=i;
		}
		ss=0;
	}
	for(int i=0;i<ans[s].size();i++)
	{
		cout<<ans[s][i]<<" ";
	}
	cout<<endl<<maxn;
}
2023/10/11 08:26
加载中...