Python 为什么下面的代码在codechef中给出了分段错误,但在其他地方却完全正确
下面的代码在代码块和一些在线编译器中运行得很好,但每次提交时都会出现分段错误Python 为什么下面的代码在codechef中给出了分段错误,但在其他地方却完全正确,python,c,python-2.7,segmentation-fault,Python,C,Python 2.7,Segmentation Fault,下面的代码在代码块和一些在线编译器中运行得很好,但每次提交时都会出现分段错误 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
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
据我所知,每当我们试图访问一些未分配的内存时,seg故障就会发生,但这是如何发生的,在哪里发生的
#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;
}
#包括
最小整数(整数a[][300],整数n)
{
int flag=0,minval=100000000,mini,i,j,temp;
对于(i=0;i如果在扫描数组期间从未设置mini
,则函数minimum
可能会返回未初始化的值。我不确定您的逻辑应该是什么,但也许您应该在函数顶部初始化mini=0
,或者采取其他措施防止这种情况发生。您可以dn没有指定给定矩阵中应该包含的内容,但作为示例,全零矩阵将触发此行为