PAT 乙级 25 分题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/supertian007/article/details/79791740
  • 1005 继续(3n+1)猜想 (25)

测试点 3,4 段错误。因为对数组下标限制的判断写错了,应该写在取数组元素的前面。

if(tmp<maxn&&cnt[tmp]==1)
  • 1010 一元多项式求导 (25)

如果第一次就输入 0 多项式,那就输出 0 0。否则 0 多项式不输出。

  • 1015 德才论 (25)

模拟排序题。比较简单。

  • 1020 月饼 (25)

测试点 2 错误。这个题前两个输入说是正整数,后面的输入只说了是正数,所以要用 double 来存储。int 改成 double 测试点 2 就过了。

  • 1025 反转链表 (25)

测试点 6 错误。因为输入里可能有无效的结点。

例如这种输入:

00000 6 3
00000 1 11111
11111 2 22222
22222 3 -1
33333 4 44444
44444 5 55555
55555 6 -1
  • 1030 完美数列(25)

测试点 3 错误。

应该是 n = 1 的数据:

1 2
7

我用的是二分的办法。ans 最小值应为 1。

  • 1035 插入与归并(25)

测试点 3,5,6 出错。

这个题花了我两个多小时。

我看了算法笔记,说原始序列不算中间序列。但题目里并没有给出这种保证。

所以我开始想的是,先比较原数组和结果数组,如果相等,就做一次插入排序。然后输出。

但是对这种数据就不行:

4
2 3 1 4
2 3 1 4

对于插入排序来说,2 3 1 4 的下一轮,还是 2 3 1 4,再下一轮就是 1 2 3 4。

因为第一轮是正常序列,不需要排序。所以我开始还准备设一个 flag,如果排序一轮后这轮没变化,就再做一次排序。

但答案好像没有这个意思。只是说原数组不算中间序列。

于是就是第一轮,排序,然后比较,如果相同,就再一轮,输出。

另一个让我花了很长的时间的是,归并排序的循环条件,我一直记不得。也是没有理解。外层循环是 step=2;step/2<n;step*-2;,内层循环是 i = 0;i<n;i+=step

  • 1040 有几个PAT(25)

测试点 3,4错误。因为忘了对 1000000007 取余数。而且中途需要用 long long 保存相乘的结果,免得溢出。

  • 1045 快速排序(25)

测试点 2,格式错误。在输入结果为0的时候,还要再输出一个空行。

void print(vector<int> vv){
    printf("%lu\n",vv.size());
    for(int i=0;i<vv.size();i++){
        printf("%d",vv[i]);
        if(i<vv.size()-1)printf(" ");
    }
    if(vv.size()==0)printf("\n");
}
  • 1050 螺旋矩阵(25)

测试点 1,3,7 浮点错误。因为 m 和 n 没算对。

  • 1055 集体照 (25)

这题用 vector 存储排序后应该输出的每行的下标。

  • 1060 爱丁顿数(25)

测试点 3 出错。因为如果是这样的数据:

3
0 0 0

那答案应该是 0 天 超过 0 公里。

这个题目 E 天超过 E 公里,我开始很难理解,看了别人的题解才懂了一点。

从大往小扫描 2 3 6 6 7 7 8 8 9 10 

10,表示 1 天超过 1 公里。
9,2 天超过 2 公里。
8,3 天超过 3 英里
8,4 天超过 4 英里
7,5 天超过 5 英里
7,6 天超过 6 英里
6,7天超过7英里(矛盾)

也就是 E = 6。
  • 1065 单身狗(25)

这题用集合来做。遍历集合的代码 set<int> iterator it=ss.begin();it!=ss.end();it++

  • 1070 结绳(25)

这题也一个排序数学题。

  • 1075 链表元素分类(25)

套路明显,比较简单。

  • 1080 MOOC期终成绩 (25)

测试点 3 出错。

我开始是这么写的:

        if(stu[i].mg==0)printf(" -1");
        else printf(" %d",stu[i].mg);
        if(stu[i].fg==0)printf(" -1");
        else printf(" %d",stu[i].fg);

我把所有人的期中期末设为0,如果最后还是0,就表示他没考,输出-1。

但这是有问题的,万一一个学生,期中考0分,期末考100分。

应该输出的是 0 100,而不是 -1 100。

所以加了这一行就好了 stu[order].mg=stu[order].fg=-1;

  • 1085 PAT单位排行 (25)

模拟排序题。

猜你喜欢

转载自blog.csdn.net/supertian007/article/details/79791740
今日推荐