欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

程序不能AC的常见原因

程序员文章站 2022-05-30 16:30:09
...

程序不能AC的常见原因

时间超限:
  • 传参数到被调用函数的时候没有引用导致每次都要复制,占用太多的时间。解决办法:加上引用符号&。
    例如下面的结构体函数的情况:
#include <algorithm>
#include <unordered_map>
#include <stdio.h>
#include <vector>
#include <iostream>
using namespace std;
struct Node{
    string address;
    int data;
    string next;
  friend  bool operator< (Node& a,Node& b)//最开始没有写引用符号,导致时间超限!!!
    {
        return a.data<b.data;
    }

};
int main()
{
    int n;
    char begin[10];
    scanf("%d%s",&n,begin);
    vector<Node> nodes;
    unordered_map<string, Node> map;//总是忘记写逗号导致错误
    char begin1[10],next[10];
    int data;
    for(int i=0;i<n;i++){
        scanf("%s%d%s",begin1,&data,next);
        map[begin1]={begin1,data,next};
    }
    for(string i=begin;i!="-1";i=map[i].next) nodes.push_back(map[i]);
    if (nodes.empty()) printf("0 -1");
    else{
        sort(nodes.begin(),nodes.end());
        printf("%d %s\n",nodes.size(),nodes[0].address.c_str());
        for(int i=0;i<nodes.size();i++){
            if(i<nodes.size()-1){
                printf("%s %d %s\n",nodes[i].address.c_str(),nodes[i].data,nodes[i+1].address.c_str());
            }else
            {
                printf("%s %d -1\n",nodes[i].address.c_str(),nodes[i].data);
            }
        }
    }
}
相关标签: 错误总结