为啥报错?(忽略正确性)
查看原帖
为啥报错?(忽略正确性)
377768
Tooler_Yang楼主2022/7/16 19:38
#include<bits/stdc++.h>
using namespace std;
string s[21];
int maxx;
struct edge{
    int end;
    int dis;
};
struct node{
    int vis_time=2;
    vector<edge> e;
}nd[100];
int contact(string a,string b){
    for(int i=0;i<=a.size();i++){
        bool flag=true;
        for(int j=0;j<=i;j++){
            if(a[a.size()-i-1+j]!=b[j]){
                flag=false;
                break;
            }
        }
        if(flag&&i+1!=b.size()) return b.size()-i-1;
    }
    return 0;
}
void dfs(int x,int all){
    maxx=max(maxx,all);
    if(nd[x].vis_time==0){
        return ;
    }
    vector<int>::iterator it=nd[x].e.begin();
    for(;it!=nd[x].e.end();it++){
        all+=*it.dis;
        dfs(*it,all);
        all--*it.dis;
    }
}
void add(int a,int b,int base){
    edge add_edge;
    add_edge.end=b;
    add_edge.dis=base;
    nd[a].e.push_back(add_edge);
}
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>s[i];
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(i==j) continue;
            int base=contact(s[i],s[j]);
            if(base){
                add(i,j,base);
            }
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++) nd[j].vis_time=2;
        maxx=0xc0c0c0c0;
        dfs(i,0);
        cout<<maxx<<"\n";
    }
    return 0;
}

报错内容:

31行:[Error] conversion from 'std::vector<edge>::iterator {aka __gnu_cxx::__normal_iterator<edge*, std::vector<edge> >}' to non-scalar type 'std::vector<int>::iterator {aka __gnu_cxx::__normal_iterator<int*, std::vector<int> >}' requested
32行:[Error] no match for 'operator!=' (operand types are 'std::vector<int>::iterator {aka __gnu_cxx::__normal_iterator<int*, std::vector<int> >}' and 'std::vector<edge>::iterator {aka __gnu_cxx::__normal_iterator<edge*, std::vector<edge> >}')
2022/7/16 19:38
加载中...