oj上做题runtime error可能的原因

本文详细介绍了在线评测系统中常见的运行时错误类型及其原因,包括除以零、数组越界、指针越界、使用已释放空间及栈溢出等问题,并提供了排查错误的方法。

oj上做题runtime error可能的原因


原文链接

runtime  error (运行时错误)就是程序运行到一半,程序就崩溃了。

比如说,

①除以零

②数组越界:int a[3]; a[10000000]=10;

③指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10;

④使用已经释放的空间:int * p; p=(int *)malloc(5 * sizeof(int));free(p); *p=10;

⑤数组开得太大,超出了栈的范围,造成栈溢出:int a[100000000];
一般来说,在oj上做题都把数组设成全局变量,减少5出现的可能。

有的时候再出现这样的错误还会给提示: 

Runtime Error(ARRAY_BOUNDS_EXCEEDED) // array bounds exceed     数组越界

Runtime Error(DIVIDE_BY_ZERO) //divisor is nil                 除零

Runtime Error(ACCESS_VIOLATION) //illegal memory access         非法内存读取

Runtime Error(STACK_OVERFLOW) //stack overflow              系统栈过载 

这样可以照着上面查找错误。
#include <bits/stdc++.h> using namespace std; struct node { int first; int second; }h[10005]; int kdl[10005][10005]; long long n, f[10005], hest, r, t, a, b; int main() { cin>>n>>t>>hest>>r; for (long long i = 1; i <= n; i++) { f[i] = hest; } for (long long i = 1; i <= r; i++) { cin>>a>>b; h[i].first = min(a, b); h[i].second = max(a, b); if (kdl[a][b] == 1)continue; kdl[a][b] = 1; for(long long j=h[i].first+1;j<h[i].second;j++)f[j]--; } for(long long i=1;i<=n;i++)cout<<f[i]<<endl; return 0; }题目描述 FarmerJohn 有 n n 头牛,它们按顺序排成一列。FarmerJohn 只知道其中最高的奶牛的序号及它的高度,其他奶牛的高度都是未知的。现在 FarmerJohn 手上有 R R 条信息,每条信息上有两头奶牛的序号( a a 和 b b),其中 b b 奶牛的高度一定大于等于 a a 奶牛的高度,且 a , b a,b 之间的所有奶牛的高度都比 a a 小。现在 FarmerJohn 想让你根据这些信息求出每一头奶牛的可能的最大的高度。(数据保证有解) 输入格式 第一行:四个以空格分隔的整数: n , i , h , R n,i,h,R( n n 和 R R 意义见题面; i i 和 h h 表示第 i i 头牛的高度为 h h,他是最高的奶牛)。 接下来 R R 行:两个不同的整数 a a 和 b b( 1 ≤ a , b ≤ n 1≤a,b≤n)。 1 ≤ n ≤ 10000 1≤n≤10000, 1 ≤ h ≤ 1000000 1≤h≤1000000, 0 ≤ R ≤ 10000 0≤R≤10000。 输出格式 一共 n n 行,表示每头奶牛的最大可能高度。 输入数据 1 9 3 5 5 1 3 5 3 4 3 3 7 9 8 输出数据 1 5 4 5 3 4 4 5 5 5 0 Runtime Error # 状态分数 耗时 内存占用 #1 Runtime Error0 0ms 156 KiB #2 Runtime Error0 0ms 156 KiB #3 Runtime Error0 0ms 156 KiB #4 Runtime Error0 0ms 156 KiB #5 Runtime Error0 0ms 156 KiB #6 Runtime Error0 0ms 156 KiB #7 Runtime Error0 0ms 156 KiB #8 Runtime Error0 0ms 156 KiB #9 Runtime Error0 0ms 156 KiB #10 Runtime Error0 0ms 260 KiB
最新发布
10-06
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值