把dp[i]=a[i]的初始化去掉就能算对是为什么啊
#include<bits/stdc++.h>
using namespace std;
int n,a[30],f[30][30],dp[30],ans,t,son[30];
bool flag;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
dp[i]=a[i];
}
for(int i=1;i<n;i++)
{
for(int j=i+1;j<=n;j++)
{
cin>>flag;
if(flag)
{
f[i][j]=1;
f[j][i]=1;
}
}
}
for(int i=n;i>=1;i--)
{
for(int j=1;j<=n;j++)
{
if(f[i][j] && a[i]+dp[j]>dp[i])
{
dp[i]=a[i]+dp[j];
}
}
}
for(int i=1;i<=n;i++)
{
if(dp[i]>ans)
{
ans=dp[i];
t=i;
}
}
printf("%d",ans);
return 0;
}