首页 > 腾讯9.6算法笔试,第四题第五题思路没问题,但就是不能AC
头像
kakad
编辑于 2020-09-07 14:42
+ 关注

腾讯9.6算法笔试,第四题第五题思路没问题,但就是不能AC

第四题 0case:
第四题已经知道为什么了,
char c;
cin>>c;
circle[i] = c;
应该是
int c;
cin>>c;
circle[i] = c;

    void solution4(){
        int T;
        cin>>T;
        vector<string> res;
        while(T--){
            int n;
            cin>>n;
            unordered_set<string> S;
            bool same = false;
            while(n--){
                vector<int> circle(6);
                for(int i=0;i<6;i++){
                    char c;
                    cin>>c;
                    circle[i] = c;
                }
                sort(circle.begin(),circle.end());
                string circle_s;
                for(auto &item:circle){
                    circle_s += to_string(item);
                }
                if(S.find(circle_s)!=S.end()){
                    same = true;
                    res.emplace_back("YES");
                    break;
                } else
                    S.insert(circle_s);
            }
            if(!same)
                res.emplace_back("NO");

        }
        for(auto &s:res)
            cout<<s<<endl;


    }

第五题, 70%:
void solution5(){
    long int n,m,T;
    cin>>n>>m>>T;
    while(m--){
        int x,y,d;
        cin>>x>>y>>d;
        G[x][y] = d;
        final[x]= 0;
        final[y] = 0;
        D[x] = INT_MAX;
        D[y] = INT_MAX;
    }

    long int to = Dj(1,n);
    for(auto &vis:final){
        vis.second = 0;
    }
    for(auto &dis:D){
        dis.second = INT_MAX;
    }
    long int re = Dj(n,1);
    long int res = T*(to+re);
    cout<<res<<endl;

}
long int Dj(int start, int end){
    priority_queue<pair<long int,int>, vector<pair<long int,int>>, std::greater<pair<long int,int>>> pq;
    pq.push(make_pair(0,start));
    D[start] = 0;
    while(!pq.empty()){
        int k = pq.top().second;
        long int dis = pq.top().first;
        pq.pop();
        if(k == end)
            return dis;
        final[k] = 1;
        for(auto &near:G[k]){
            int u = near.first;
            int u_dis = near.second;
            if(!final[u]&&D[u] > dis + u_dis){
                D[u] = dis + u_dis;
                pq.push(make_pair(D[u],u));
            }
        }
    }
    return 0;
}
unordered_map<int,unordered_map<int,int>> G;
unordered_map<int,long int> D;
unordered_map<int,int> final;
求指错!!!!!!!!!!!


全部评论

(1) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐