因为解题思路不对而造成的答案错误暂且不说,除了解题思路不对还有可能是以下原因:
这个是最不容易注意到的地方,因为int的范围大概为20亿,以下的情形需要用long long代替:
要处理的数据大小可能大于20亿。此时,要处理的数据要用long long代替。
这个特别需要留意!一个程序必须保证能把给定的所有输入转换成正确的输出!当然包括一些边界情况,边界情况通常能在题目中挖掘到,就是输入的极端情况,最常见的是以下两种:
输出信息错误是指没有按照题目给定的要求输出信息,区别于格式错误(一般是空格、换行没调整好),这个错误一般源自以下原因:
这个错误是特别多啊!这个问题在我的另一篇博文浅要的总结过:
https://blog.csdn.net/qq_40677317/article/details/104633731
格式错误一般是空格、回车的输出不符题目要求。最常见的要求是输出最后不得含有多余空格,这里总结了两个输出技巧解决这个问题:
1.<结果 空格 结果 空格 ... 结果>的情况
#include<cstdio>
int main()
{
int ans[8]={1,2,3,4,5,6,0,0};
int count=6;//假设我们已经统计出来结果有6个
for(int i=0;i<count;i++)
{
printf("%d",ans[i]);
if(i<count-1)//最后一个之前的都接着输出空格
printf("*");//*代替空格,方便观察结果
}
return 0;
}
1*2*3*4*5*6
--------------------------------
Process exited after 0.6741 seconds with return value 0
请按任意键继续. . .
2.<其他信息 空格 结果 空格 ... 结果>的情况
#include<cstdio>
int main()
{
int ans[8]={1,2,3,4,5,6,0,0};
int count=6;//假设我们已经统计出来结果有6个
printf("其他信息");//其他信息
for(int i=0;i<count;i++)
printf("*%d",ans[i]);
return 0;
}
输出:
其他信息*1*2*3*4*5*6
--------------------------------
Process exited after 0.8153 seconds with return value 0
请按任意键继续. . .
到现在我也不知道为什么叫段错误,但根据我做错过的经历,导致段错误的一般原因如下:
只遇到过一次,一般是数组开辟的太大,经试验,全局的int数组大概开10W-20W是没有问题的。
以上是本人在做的为数不多的100+题当中总结出来的一点基本的经验,希望能以此加深自己对此类问题的分析能力,并对一些PAT道友提供些帮助吧!