Matrix好还是坏?

时间:2017-09-08 10:12:53

标签: algorithm

如果存在阵列A(由整数组成)使得B [i] [j] = | A [i] - A [A],则维数N×N的矩阵B(由整数组成)被认为是好的。 j] |,其中| x |表示整数x的绝对值。

给出一个部分填充的矩阵B,其尺寸为N×N.该矩阵的条目的Q由0或1填充。您必须确定是否可以填充矩阵B的其余条目(条目可以用任何整数填充,不一定是0或1),这样得到的完全填充矩阵B就是好的。

  

实施例

     

输入4

     

2 2

     

1 1 0

     

1 2 1

     

2 3

     

1 1 0

     

1 2 1

     

2 1 0

     

3 2

     

2 2 0

     

2 3 1

     

3 3

     

1 2 1

     

2 3 1

     

1 3 1

     

输出

     

     

没有

     

     

没有

这是我的代码,但未通过一些测试。

  

include int main(){

int t;
scanf("%d", &t);
while(t--){
    int n, q;
    scanf("%d %d", &n, &q);
    int arr[n][n];
    int brr[n];
    for(int i=0;i<n;i++){
        brr[i]=1;
        for(int j=0;j<n;j++)
            arr[i][j]=-1;
    }
    int result=0;
    while(q--){
        int l, r, val;
        scanf("%d %d %d", &l, &r, &val);
        arr[l-1][r-1]=val;
        arr[r-1][l-1]=val;
        if( abs(brr[l-1]-brr[r-1])!=val  && l!=r){
            brr[r-1]=brr[r-1]-val;
        }
    }
    for(int i=0;i<n;i++)
        printf("%d ", brr[i]);
    printf("\n");
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            if(arr[i][j]!=-1 ){
                if( abs(brr[i]-brr[j])==arr[i][j] &&  abs(brr[i]-brr[j])==arr[j][i]){
                    continue;
                }
                else{
                    result=1;
                    break;
                }
            }
        }
        if(result)
            break;
    }
    if(result)
        printf("no\n");
    else
        printf("yes\n");
}
return 0; }

1 个答案:

答案 0 :(得分:0)

问题来自现场比赛:https://www.codechef.com/SEPT17/problems/FILLMTR/。请注重学习而不是增加已接受问题的数量。