gpt4 book ai didi

python - 为什么以下代码在 codechef 中给出段错误,但在其他地方却工作得绝对正确

转载 作者:行者123 更新时间:2023-11-30 17:26:01 25 4
gpt4 key购买 nike

以下代码在代码块和多个在线编译器中运行得很好,但在提交时会出现段错误。

据我所知,每当我们尝试访问一些未分配的内存时,都会发生段错误,但是这是如何以及在哪里发生的?

#include<stdio.h>
int minimum(int a[][300],int n)
{
int flag=0,minval=100000000,mini,i,j,temp;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(a[j][i]!=0&&flag==0)
{
temp=a[j][i];
flag=1;
}
else if(a[j][i]!=0&&temp!=a[j][i])
{
flag=0;
break;
}
}
if(flag==1&&temp<minval)
{
minval=temp;
mini=i;
flag=0;
}
}
return mini;
}

int main()
{
int i,j,t,n,a[300][300],copy[300],column,subt;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(j!=i)
scanf("%d",&a[i][j]);
else
a[i][j]=0;
}
column=minimum(a,n);
for(i=0;i<n;i++)
if(a[i][column]==0)
break;
for(j=0;j<n;j++)
copy[j]=a[i][j];
subt=a[(i+1)%n][column];
for(i=0;i<n;i++)
{
if(copy[i]==0)
copy[i]+=subt;
else
copy[i]+=1;
}
for(i=0;i<n;i++)
printf("%d ",copy[i]);
printf("\n");
}
return 0;
}

我还尝试在 python 中提交完全相同的代码(完全相同的逻辑)。这同样在任何地方都运行得很好,但只要提交就会给出 NZEC。

def minimum(a,n):
flag=0
minval=max(max(a))+1
for i in range(n):
for j in range(n):
if a[j][i]!=0 and flag==0:
temp=a[j][i]
flag=1
elif a[j][i]!=0 and temp!=a[j][i]:
flag=0
break
if flag==1 and temp<minval:
minval=temp
mini=i
flag=0
return mini

for i in range(input()):
n=input()
a=[]
copy=[]
for j in range(n):
temp=(map(int,raw_input().split()))
temp.insert(j,0)
copy=temp[:]
a.append(copy)
del temp

column=minimum(a,n)
print column
for k in range(n):
if a[k][column]==0:
break
copy=a[k][:]
subt=a[(k+1)%n][column]
for k in range(n):
if copy[k]==0:
copy[k]=copy[k]+subt
else:
copy[k]=copy[k]+1

del a
for item in copy:
print item,
print

相同的代码如何在两种编程语言中生成两种类型的运行时错误

最佳答案

如果在扫描数组期间从未设置 mini,则函数 minimum 可能会返回未初始化的值。我不确定您的逻辑应该是什么,但也许您应该在函数顶部初始化 mini = 0 或执行其他操作来防止这种情况发生。您没有指定给定矩阵中应该包含什么内容,但作为示例,全零的矩阵将触发此行为。

关于python - 为什么以下代码在 codechef 中给出段错误,但在其他地方却工作得绝对正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26912023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com