ACM新手入门常见问题
2015-10-20 19:12
309 查看
七种错误类型
1.Answer error
程序本身有问题,数据类型,算法有问题,输入输出语句有错误等
1.当测试数据有多组,要在循环内赋初值,保证每次循环开始条件相同,输出结果也在循环内部。如:
while(scanf("%d",&n))
{
s=0;
for(i=0;i<n;i++)
s+=a[i];
}
2.数组没有初始化,造成结果累加。
memset(a,0,sizeof(a));
等价于
for(i=0;i<n;i++)
{
a[i]=0;
}
关于循环:
当循环里只有一个语句时,两个大括号可以不加。
注意循环的初始值,结束条件,和循环方式,比如九九乘法表:
for(i=0;i<10;i++)
for(j=1;j<10;j++)
其中i,j的初值可以随意变换。
3.题意不明,未按照要求输入输出。如n组数据a+b的和:
scanf(“%d",&n);
while(n--)
{
scanf("%d %d",&a,&b);
}
而不是:
while(scanf("%d,%d)!=EOF);
要求格式化输入输出。
3.算法错误,其实就是解题思路有问题。
2.Output Limit Exceeded
输出数据量过大,可能是陷入了死循环
1.比如题目有循环结束条件,你却未使用,陷入死循环
输入有多组,用while(scanf(“%d”,&a)!=EOF)或者while(~scanf(“%d”,&a))
表示文件自动结束,
输入遇到”0“或者“#”结束,用while(scanf(“%c”,&a)&&a!=0)或者
while(scanf(“%c”,&a))
{
if(a=='#')
break;
}
2.没有理解题意,未按要求输入输出
题目说有n组数据,每组3个数,用
scanf(“%d”,&n);
while(n--)
{
scanf(“%d%d%d”,&a,&b,&c);
}
3.Time Limit Exceeded
程序运行超过该题的时间上限还没有得到结果
输入输出不正确,程序无法正确运行,也无法正常结束。
H题正确输入是:
scanf(“%d”,&n);
while(n--)
{
scanf(“%d”,&m);
for(i=0;i<m;i++)
scanf("%d",&a[i]);
}
4.Presentation Error
输出格式不对,可检查空格,空行等等细节
题目要求两组数据之间有一个空行,例如多组求和,就要用标记,用
if(f==0)
printf(“%d\n”,s);
else
printf(“\n%d\n”,s);
5.Runtime Error
程序运行过程中出现非正常中断,如数组越界,除零错误,整数溢出
1.比如一组数据有100个,你的数组范围却只有50,a[50];
2.忘写取地址符号“&”,导致中断。
3对应格式错误,printf(“%d,%d,%d”,a,b);
4,超出数据类型的数据范围,比如99999999999999需要用long long 型。
6.Compile Error
程序编译出错,非正常停止。如:
1.手误,scanf(”%d333“,&a);
2.没有输入或者输出语句。
7.System Error
系统问题,oj内部出现问题,重新提交
1.Answer error
程序本身有问题,数据类型,算法有问题,输入输出语句有错误等
1.当测试数据有多组,要在循环内赋初值,保证每次循环开始条件相同,输出结果也在循环内部。如:
while(scanf("%d",&n))
{
s=0;
for(i=0;i<n;i++)
s+=a[i];
}
2.数组没有初始化,造成结果累加。
memset(a,0,sizeof(a));
等价于
for(i=0;i<n;i++)
{
a[i]=0;
}
关于循环:
当循环里只有一个语句时,两个大括号可以不加。
注意循环的初始值,结束条件,和循环方式,比如九九乘法表:
for(i=0;i<10;i++)
for(j=1;j<10;j++)
其中i,j的初值可以随意变换。
3.题意不明,未按照要求输入输出。如n组数据a+b的和:
scanf(“%d",&n);
while(n--)
{
scanf("%d %d",&a,&b);
}
而不是:
while(scanf("%d,%d)!=EOF);
要求格式化输入输出。
3.算法错误,其实就是解题思路有问题。
2.Output Limit Exceeded
输出数据量过大,可能是陷入了死循环
1.比如题目有循环结束条件,你却未使用,陷入死循环
输入有多组,用while(scanf(“%d”,&a)!=EOF)或者while(~scanf(“%d”,&a))
表示文件自动结束,
输入遇到”0“或者“#”结束,用while(scanf(“%c”,&a)&&a!=0)或者
while(scanf(“%c”,&a))
{
if(a=='#')
break;
}
2.没有理解题意,未按要求输入输出
题目说有n组数据,每组3个数,用
scanf(“%d”,&n);
while(n--)
{
scanf(“%d%d%d”,&a,&b,&c);
}
3.Time Limit Exceeded
程序运行超过该题的时间上限还没有得到结果
输入输出不正确,程序无法正确运行,也无法正常结束。
H题正确输入是:
scanf(“%d”,&n);
while(n--)
{
scanf(“%d”,&m);
for(i=0;i<m;i++)
scanf("%d",&a[i]);
}
4.Presentation Error
输出格式不对,可检查空格,空行等等细节
题目要求两组数据之间有一个空行,例如多组求和,就要用标记,用
if(f==0)
printf(“%d\n”,s);
else
printf(“\n%d\n”,s);
5.Runtime Error
程序运行过程中出现非正常中断,如数组越界,除零错误,整数溢出
1.比如一组数据有100个,你的数组范围却只有50,a[50];
2.忘写取地址符号“&”,导致中断。
3对应格式错误,printf(“%d,%d,%d”,a,b);
4,超出数据类型的数据范围,比如99999999999999需要用long long 型。
6.Compile Error
程序编译出错,非正常停止。如:
1.手误,scanf(”%d333“,&a);
2.没有输入或者输出语句。
7.System Error
系统问题,oj内部出现问题,重新提交
相关文章推荐
- webapp 中为span元素赋值
- 小小君的C语言第九课
- 编译错误:com.android.dex.DexException:
- CoreData
- 关于duilib中的list的扩展探索
- 设计模式————汇总
- Cell高亮时设置cell内容
- openstack用bosh部署cloudfoundry(二)---准备bosh cli
- 【PAT】1067. Sort with Swap(0,*) (25)
- UVA 10118 Free Candies
- 面试笔试之Java集合
- 持续集成并不能消除 Bug,而是让它们非常容易发现和改正(转)
- Android的屏幕多样性支持
- android support-v4、v7、v13
- 【基础练习】【强连通tarjan】codevs4093 EZ的间谍网络题解
- paros抓包
- Python中getheader
- 一个简短的epoll服务器示例, 监听5000个端口, 使用线程池
- leetcode之Median of Two Sorted Arrays
- python爬虫实例