首页 > 解决方案 > 请发现它在开发中工作但在hackerrank中没有的错误

问题描述

代码不在hackerrank中工作,但在dev c++中工作??输出值为 1047095560 像这样的一些数字,我尝试了其他方法来解决代码及其工作,但这种方法不起作用。一些测试用例是 10 3 1 5 3 4 8 7 6 9 1 ans 10 second test case 5 3 1 2 100 2 5 100 3 4 100 ans 200

#include <iostream>;
using namespace std;
int main()
{
int n,m,ans;
cin>>n>>m;
int a[m][3],b[n]={0};
for(int i=0;i<m;i++)
{
     for(int j=0;j<3;j++)
     cin>>a[i][j];
}

for(int k=0;k<m;k++)
{
    for(int i=a[k][0];i<=a[k][1];i++)
    {
         b[i-1]+=a[k][2];
    }
}
for(int i=0;i<n;i++)
{  
   if(b[i]>b[i+1])
    {   
         ans=b[i];
         swap(b[i],b[i+1]);
    }
    else
          ans=b[i+1];
}
cout<<ans;

return 0;
}

标签: c++arrayssegmentation-faultc++14

解决方案


一个问题在于:

int b[n]={0};
for(int i=0;i<n;i++)
{  
   if(b[i]>b[i+1])
   ...
}

在最后一次迭代中,何时i == n - 1访问会b[i+1]产生未定义的行为。


推荐阅读