Wrong Answer,Memory Limit Exceeded
错误原因:
1.在递归的时候,递归函数中忘记加返回return。
1.1做题时遇到一个奇葩错误,把它记到这里,看代码:
代码1:错误,用c++提交wrong answer,但是用g++提交却accepted。
int set_find(int d)
{
if(set[d]<0)
return d;
set_find(set[d]);//这里递归时没有返回值,只有在结束条件时返回(即最后一层递归有返回值,前面的没有返回值)
}
上述代码在进行递归的时候,只有在递归结束时的最后一层返回一个值d,但是并没有把值带到前面的递归当中。
但是在vc中却运行正确,似乎自动加了个返回return(见下面正确代码2)。
这可能与编译器有关,当时那道题我没加return,
用c++提交wrong answer,但是用g++提交却accepted。
(当时就感觉还是自己的代码有问题,终于在仔细检查之后还是找到了这个错误,心情顿时就比较爽了)
代码2:正确,用c++,g++提交均accepted。
int set_find(int d)
{
if(set[d]<0)
return d;
return set_find(set[d]);
}
1.2 当时这道题其实是树中的并查集相关的题目POJ 1308 Is It A Tree? ,上述代码没有用并查集,
我把它改成并查集后,测试了下这个错误,同样是在vc中运行正确,似乎自动加了个返回return。
在提交时却出现了:
用c++提交Memory Limit Exceeded,但是用g++提交却accepted。
为什么出现了Memory Limit Exceeded,什么原因我也不确定,在这先记下。
但是可以看出忘记加return的话,在运行的时候的确与编译器有关,因此要写正确代码最重要,以防出现莫名其妙的错误。
代码1:错误,用c++提交Memory Limit Exceeded,但是用g++提交却accepted。
int set_find(int d)
{
if(set[d]<0)
return d;
set[d]=set_find(set[d]);//这里递归时没有返回值,只有在结束条件时返回(即最后一层递归有返回值,前面的没有返回值)
}
代码2:正确,用c++,g++提交均accepted。
int set_find(int d)
{
if(set[d]<0)
return d;
return set[d]=set_find(set[d]);
}
警告自己:因此,在写代码时碰到某个编译器过不了的时候,考虑一下是不是自己代码的错误呢。因为某些小错误有些编译器会自动更正,而某些编译器却不能改正。
写代码还是正确最重要啊,不要光依靠编译器的自动更正。更不要责怪某个编译器不能检查到这个错误,毕竟编译器也不是万能的!
Wrong Answer,Memory Limit Exceeded的更多相关文章
- Min Stack (LeetCode) tweak it to avoid Memory Limit Exceeded
class MinStack { public: void push(int x) { if(values.empty()) { values.push_back(x); min_indices.pu ...
- Spark OOM:java heap space,OOM:GC overhead limit exceeded解决方法
问题描述: 在使用spark过程中,有时会因为数据增大,而出现下面两种错误: java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMe ...
- Exceeded memory limit for $group, but didn't allow external sort. Pass allowDiskUse:true to opt in
原语句: db.carMongoDTO.aggregate({}}}, {}}}) 报错: Exceeded memory limit for $group, but didn't allow ext ...
- ORA-19815,ORA-19809 :limit exceeded for recovery files
数据库重新启动的时候,收到了ORA-19815的错误.从错误的提示来看,是由于闪回区的空间被填满导致无法成功启动.这种情形我们通常考虑的是清除归档日志,那就直接在OS层面rm了,真的是这样吗?客官,如 ...
- Out of memory error : GC overhead limit exceeded
GC overhead limit exceeded 是指垃圾回收器通过分析当前内存使用趋势,提前抛出异常而不是真正等到内存耗尽再抛出异常.如果真正等到内存耗尽再抛出异常,可能的后果是:我们连保存重要 ...
- android studio 解析Excel数据格式导入poi-3.17.jar时的一系列报错及处理Failed resolution of: Ljavax/xml/stream/XMLEventFactory,duplicate entry: org/apache/xmlbeans/xml/stream/Location.class,GC overhead limit exceeded
在org官网下载的poi jar包,导入到studio compile files('libs/poi-3.17.jar') compile files('libs/poi-ooxml-3.17.ja ...
- JVM--你常见的jvm 异常有哪些? 代码演示:StackOverflowError , utOfMemoryError: Java heap space , OutOfMemoryError: GC overhead limit exceeded, Direct buffer memory, Unable_to_create_new_native_Thread, Metaspace
直接上代码: public class Test001 { public static void main(String[] args) { //java.lang.StackOverflowErro ...
- Spark java.lang.outofmemoryerror gc overhead limit exceeded 与 spark OOM:java heap space 解决方法
引用自:http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380146d96864968d4e414c42246 ...
- oozie: GC overhead limit exceeded 解决方法
1.异常表现形式 1) 提示信息 Error java.lang.OutOfMemoryError: GC overhead limit exceeded 2)提示出错 Erro ...
随机推荐
- android requestLayout()重新请求布局
在应用中有时会遇到,例如你listView 的设置的高度为warp_content 自适应,listView下方有个TextView但如果你删了一个listView的item 我们希望下面的TextV ...
- 算不算类似微信小程序
这几天微信发布的微信里生成小程序,刷爆了朋友圈. 微信生成的小程序不用下载安装就能在手机里出现,即用即删. 想到这里,我想到苹果手机本身再带类似于微信的小程序的呈现方式,也可以即用即删,那是我在去年久 ...
- Laravel开发:多用户登录验证(2)
上一篇讲了最基本的User验证,现在来讲一下Admin的验证. 先贴代码, 路由:routes/web.php加上以下代码, //... Route::get('admin/login', 'Admi ...
- lua元表(简单例子)
Set = {} Set.mt = {}--定义普通的表作为元表,为了避免命名污染直接放在Set内部 function Set.new(t) local set = {} setmetatable(s ...
- USB-HID鼠标、键盘通讯格式(转) 与本人实际测试结果
内容为网络转载,如有版权问题请联系删除 USB鼠标键盘协议介绍. 鼠标发送给PC的数据每次4个字节:BYTE1 BYTE2 BYTE3 BYTE4.定义分别是:BYTE1 -- |--bit7: ...
- struts2一个实例中遇到的问题
今天实现了一个登录功能的Struts2小程序. 期间遇到了许多问题,记忆犹新的是 (1)新版本的tomcat9和eclipse Neon Release (4.6.0) 发生了冲突,启动服务器的时候老 ...
- SDOI2012 Round1 day2 集合(set)解题报告
//=====================以上为官方题解==============// 数据略水,暴力枚举50. 把边按照升序排一遍,在询问,水过. #include<cstdio> ...
- Java语言实现简单FTP软件------>本地文件管理模块的实现(九)
首先看一下界面: 1.本地文件列表的显示功能 将本地的当前目录下所有文件显示出来,并显示文件的属性包括文件名.大小.日期.通过javax.swing.JTable()来显示具体的数据.更改当前文件目录 ...
- unix网络编程笔记(二)
第四章笔记 1. 基本Tcpclient/server程序的套接字函数 2. socket函数: int socket(int family,int type,int protocol); (1)so ...
- linux c编程:线程互斥一
当多个线程共享相同的内存的时候,需要确保每个线程都看到一致的数据视图.如果每个线程使用的变量都是其他线程不会读取和修改的.那么就不存在一致性问题.同样,如果变量是只读的,多个线程也不会有一致性的问题. ...