Figurer123 2017-09-19 07:00 采纳率: 0%
浏览 830
已结题

这段代码哪里错了?C++ 转 C 测试

这是PTA的一道题,原来的是C++代码,看了之后结合自己的C代码做了修改,但是编译后不能通过全部测试点,是我哪里没考虑到么?希望大神帮忙看看,谢谢!

这是C++代码(AC-code):

 #include <iostream>
/*
* author:Fayne
* time:2015-9-2 21:24:16
*thisSum用于保存临时序列之和,maxSum更新最大序列和
*left, right分别表示最大序列的左右序号,tempLeft保存临时左端的序号
*/
using namespace std;
int A[10010];

int main()
{
    int k, i;
    cin >> k;
    for (i = 0; i<k; i++)
        cin >> A[i];
    int left = 0, right = k - 1, maxSum = -1, thisSum = 0, tempLeft;//maxSum赋初值为-1为了解决出现全部序列为负的情况 
    for (i = 0; i<k; i++)
    {
        thisSum += A[i];

        if (thisSum > maxSum)//如果临时序列和大于最大和,则更新最大和 
        {
            maxSum = thisSum;
            left = tempLeft;//将临时左端的序号赋值给左端序号 
            right = i;
        }
        else if (thisSum < 0)//thisSum小于0时,从此刻下一个开始重新求和 
        {
            thisSum = 0;
            tempLeft = i + 1;//把此刻的下一序号赋值给临时左端序号 
        }
    }
    if (maxSum < 0)//maxSum < 0 说明整个序列全为负数,根据题意,最大和应该为0 
        maxSum = 0;
    cout << maxSum << " " << A[left] << " " << A[right] << endl;

    return 0;
}

这是我写的C代码(基本全错):

 #include<stdio.h>
#include<stdlib.h>

#define LEFT 0
#define RIGHT 1

int MaxSubseqSum4(int A[], int N, int Index[]);

int main()
{
    int K;
    scanf("%d", &K);
    int *A = (int *)malloc((sizeof(int)) * K);
    for (int i = 0; i < K; i++)
        scanf("%d", &A[i]);

    int Index[2] = { 0,K - 1 };
    int Result = MaxSubseqSum4(A, K, Index);

    printf("%d %d %d", Result, Index[LEFT], Index[RIGHT]);

    return 0;
}

int MaxSubseqSum4(int A[], int N, int Index[])
{
    int ThisSum, MaxSum;
    int i;
    int left = 0;
    ThisSum = 0;
    MaxSum = -1;
    for (i = 0; i < N; i++) {
        ThisSum += A[i];
        if (ThisSum > MaxSum) {
            MaxSum = ThisSum;
            Index[LEFT] = left;
            Index[RIGHT] = i;
        }
        else if (ThisSum < 0) {
            ThisSum = 0;
            left = i + 1;
        }
    }
    if (MaxSum < 0)
        MaxSum = 0;

    return MaxSum;
}
  • 写回答

5条回答

  • Figurer123 2017-09-19 07:25
    关注

    这是C++代码:
    图片说明
    这是我的C代码:
    图片说明

    评论

报告相同问题?

悬赏问题

  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条