Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么下面的代码在codechef中给出了分段错误,但在其他地方却完全正确_Python_C_Python 2.7_Segmentation Fault - Fatal编程技术网

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没有指定给定矩阵中应该包含的内容,但作为示例,全零矩阵将触发此行为