

class Solution {
public:
vector<int>dp,pre,vis;
vector<int>val;
string ans;
void dfs(int u,int fa,vector<vector<int> >& e){
vis[u]=1;
for(auto v:e[u]){
if(v==fa) continue;
if(dp[u]+val[v-1]>dp[v]) dp[v]=dp[u]+val[v-1],pre[v]=u;
dfs(v,u,e);
}
}
void Print(int u){
if(pre[u]==-1){
ans+=(u+'0');
return;
}
Print(pre[u]);
ans+="-";
ans+=(u+'0');
}
string digSum(vector<int>& a, vector<vector<int> >& e) {
int n=a.size();
val=a;
dp.resize(n+1,0),pre.resize(n+1,-1);
vis.resize(n+1,0);
for(int i=1;i<=n;i++) dp[i]=a[i-1];
for(int i=1;i<=n;i++)
if(!vis[i]) dfs(i,0,e);
int id,mx=0;
for(int i=1;i<=n;i++)
if(dp[i]>mx) mx=dp[i],id=i;
Print(id);
return ans;
}
};請問這個程式哪里出現了段錯誤,一直沒找出。
uj5u.com熱心網友回復:
學習一下除錯技術,除錯就知道了轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/25895.html
標籤:C++ 語言
上一篇:程式撰寫
下一篇:c++知識點練習,求解
