dictator927
晏虚
采纳率0%
2021-02-27 21:12

代码在自己电脑的vscode上运行正确,但在PAT上错误是为什么呢?

PAT平台的一道题,有序数组的插入,https://pintia.cn/problem-sets/434/problems/965573204499779584

 

我的思路是先判断数据是否会溢出,如果会,显示插入失败;

如果不会,则再判断原数组中是否存在数据和要插入的数相等,如果存在,显示插入失败;

如果不存在,则将要插入的数X添加在数组的末尾

然后进入循环

循环内容是将X与相邻的数比较大小,如果X大于相邻的数,则X与相邻的数交换位置;

如果X小于相邻的数,则直接跳出循环,显示插入成功。

思路应该没有问题,因为代码在自己电脑的vscode上运行正确,各种情况都试过一遍。

 

我的代码是这样的:

bool Insert( List L, ElementType X)
{
    bool b = true;
    Position i;
    ElementType temp;
    int cnt = 0;
    if((L->Last)+1==MAXSIZE)
        b = false;
    else{
        for(i=(L->Last); i>=0; i--){
            if(L->Data[i]==X){
                cnt++;
                b = false;
                break;
            }
        }
        if(cnt==0){
            L->Data[(L->Last)+1]=X;
            for(i=(L->Last); i>=0; i--){
                if (L->Data[i]<X){
                temp = L->Data[i];
                L->Data[i] = X;
                L->Data[i+1] = temp;
                }else{
                    break;
                }
            }
        }
    }
    return b;
}

但到了PAT上就显示部分答案错误,具体情况是:

1.溢出 正确

2.原数组中存在与要插入的数相等的数据  正确

3.插入最大值 失败

4.插入最小值 失败

 

萌新,代码应该写得比较烂,大家凑合着看,感激不尽

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • dictator927 晏虚 1月前

    已解决,是由于输出格式的原因。需要在最后把last的值调整一下

    点赞 评论 复制链接分享

为你推荐