说明:多个细胞排列成一条直线。在第i个单元格中,写入给定的整数ai(i=1,2,…,n)。我从左端的第一个单元格开始向右移动;我可以选择跳转到下一个单元格,或跳转到下一个单元格的下一个单元格每次我进入一个单元格,我都要支付人工智能美元,当人工智能为负时,或者当人工智能为非负时,我要接收人工智能美元。最多能挣多少美元?
输入:n,a1,a2,…,an的整数值,用空格分隔。
输出:一个整数等于想要的利润。
约束条件:0例如
输入:
7 2-13-2-16-5
输出:

我已经想出了一个解决问题的办法,我认为是正确的。但是,提交测试人员只给我5/10。

#include <stdio.h>

int main()
{
    int n,array[100];
    int i = 0;
    int sum = 0;


 scanf("%d",&n);
 for(i=0;i<n;i++){
    if(scanf("%d",&array[i])){}
 }

 for(i=0;i<n;i++)
 {
     if(array[i] >= 0)
     {
        sum += array[i];
     }
     else if(array[i] < 0 && array[i+1] < 0)
     {
         if(array[i] > array[i+1])
         {
            sum += array[i];
         }
         else if(array[i] <= array[i+1])
         {
             sum += array[i+1];
             i++;
         }
     }
 }

 printf("%d", sum);

 return 0;
}

尽管在约束内输入随机输入后,我似乎能够获得可靠的输出,但代码只通过了5/10的测试。你能指出你在守则中发现的任何违规行为吗?

最佳答案

考虑
0-1-2-1000 0
i = 1时,您的算法将在第25行执行分支,因此选择
0-1-2 0个单元格,但最佳解决方案是0-2 0

关于c - 优化线性矩阵的利润,用户可以跳过1或2个单元格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54529486/

10-10 12:30