当前位置: 首页 > 知识库问答 >
问题:

后续编码问题SIGSEGV运行时错误

楚墨一
2023-03-14
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
    int T;
    cin>>T;

    do{
        vector<int> ans;
        int N=0;
        cin>>N;
        vector<int> attackArray(N), defArray(N);

        for (int i =0; i<N; i++) {
            cin>>attackArray[i];
        }
        for (int i =0; i<N; i++) {
            cin>>defArray[i];
        }


        for (int i =0; i<N; i++) {
   int nexti, previ;
if (i == 0)
{
    nexti = 1;
    previ = N - 1;
}
else if (i == N - 1)
{
    nexti = 0;
    previ = N - 2;
}
else
{
    nexti = i + 1;
    previ = i - 1;
}
if (defArray[i] > attackArray[nexti] && 
    defArray[i] > attackArray[previ] && 
    defArray[i] > attackArray[nexti] + attackArray[previ]){

        ans.push_back(defArray[i]);

    }
else {ans.push_back(-1); break;}

}

        sort(ans.begin(), ans.end(), greater<int>());
        cout<<ans[0]<<endl;

        T--;
    }while (T !=0);


    return 0;
}
2

4

1 1 4 1

3 4 2 1

7

5 4 5 4 5 4 5

3 2 4 7 2 5 9
3

-1

共有1个答案

莘钧
2023-03-14

问题是if语句的序列应该是一个if...else if...else语句。

if (i == 0)
    ...
else if (i==N-1)
    ...
else
    ...

仅仅因为前面的if条件已经计算为true,并不会停止if语句之后的代码执行,除非您使用else。因此,即使在i==0i==n-1时,第三条if语句中的条件仍在执行,从而导致数组访问越界和崩溃。

int attackArray[N],defArray[N];
vector<int> attackArray(N), defArray(N);
int nexti, previ;
if (i == 0)
{
    nexti = 1;
    previ = N - 1;
}
else if (i == N - 1)
{
    nexti = 0;
    previ = N - 2;
}
else
{
    nexti = i + 1;
    previ = i - 1;
}
if (defArray[i] > attackArray[nexti] && 
    defArray[i] > attackArray[previ] && 
    defArray[i] > attackArray[nexti] + attackArray[previ])
    ...
 类似资料:
  • 我有三种方法来补充给定的二进制数。第一 这是错误消息:运行时错误消息:第7行:Char 44:运行时错误:有符号整数溢出:-2147483648-1不能在类型“int”(solution.cpp)中表示摘要:UndefinedBehaviorSanitizer:undefined behavior prog_joined。cpp:16:44 最后执行的输入:2147483647

  • 本文向大家介绍Java应用打包后运行需要注意编码问题,包括了Java应用打包后运行需要注意编码问题的使用技巧和注意事项,需要的朋友参考一下 最近在做一个项目,项目总的来说就是和数据库打交道,取出数据来通过HTTP协议提交到一个接口上去。具体功能不多说了,只是讲这里面的一点——编码问题 项目当中,涉及到取所有数据的MD5值。 在Java项目中,个人喜欢将项目的默认编码改为UTF-8。使用的开发工具以

  • 我正在尝试构建一个示例java项目,并尝试构建一个docker映像并将该映像推送到AWS ECR,但在登录AWS ECR时遇到了一个问题。 错误:命令执行错误:执行命令时出错:aws ecr public get login password--区域us-east-1 | docker login--用户名aws--密码stdin public。ecr。aws/z8i5y3u6。原因:退出状态1

  • 我必须这么做 > 从pdf中提取文本,我大致使用了这个 缩放PDF 最后在pdf的每一页上写些东西。我使用此处提到的14种受支持字体之一https://pdfbox.apache.org/1.8/cookbook/workingwithfonts.html.在这种情况下,泰晤士报是新罗马的。 用做 由于公司原因,我忽略了签名和捕获块。我总是关闭内容流。 大多数情况下,经过处理的PDF文件在Chro

  • 我正在尝试从Java代码运行另一个程序: 我没有文件。在/home/user/myoldfiles/中创建的shp使用BufferedReader获得的命令输出如下所示: 当我在终端(Ubuntu)中运行下一个命令时 它能打印 并成功创建了。shp文件。我在Java代码中做错了什么?

  • 我有一个(非常简单的)java Spring Boot/REST服务,它从输入中呈现PDF并使用IntelliJ对其进行测试。 我使用pdfbox作为创建此类pdf的工具。 一个特点是,除了它想要的常规内容外,客户端还可以将附件作为字节[]提供。 当用户尝试该服务时,最终文档只有附件部分的空白页。 使用IntelliJ和HTTP REST客户端进行了尝试,但遇到了相同的问题 当我注意到使用post