Round #420 A. Okabe and Future Gadget Laboratory(Div.2)

Okabe needs to renovate the Future Gadget Laboratory after he tried doing some crazy experiments! The lab is represented as an n by n square grid of integers. A good lab is defined as a lab in which every number not equal to 1 can be expressed as the sum of a number in the same row and a number in the same column. In other words, for every x, y such that 1 ≤ x, y ≤ n and ax, y ≠ 1, there should exist two indices s and t so that ax, y = ax, s + at, y, where ai, j denotes the integer in i-th row and j-th column.

Help Okabe determine whether a given lab is good!

Input

The first line of input contains the integer n (1 ≤ n ≤ 50) — the size of the lab.

The next n lines contain n space-separated integers denoting a row of the grid. The j-th integer in the i-th row is ai, j (1 ≤ ai, j ≤ 105).

Output

Print "Yes" if the given lab is good and "No" otherwise.

You can output each letter in upper or lower case.

 
Examples
 
Input
3
1 1 2
2 3 1
6 4 1
 
Output
Yes
 
Input
3
1 5 2
1 1 1
1 2 3
 
Output
No
 
Note

In the first sample test, the 6 in the bottom left corner is valid because it is the sum of the 2 above it and the 4 on the right. The same holds for every number not equal to 1 in this table, so the answer is "Yes".

In the second sample test, the 5 cannot be formed as the sum of an integer in the same row and an integer in the same column. Thus the answer is "No".

 

想明白后才发现,答案原来题目中已有,笑哭呀,还是要好好听老师说的话,好好读题,答案就在题中。

题意:有一个n×n的格子,格子里面的数如果大于1,那么它就必须等于它所在列中的一个数加它所在行的一个数之和,

不满足就是No,

 

 1 #include <iostream>
 2 #include <stdio.h>
 3 using namespace std;
 4 int a[55][55];
 5 int main(){
 6     int n,i,j;
 7     scanf("%d",&n);
 8     for(i=1;i<=n;i++)
 9       for(j=1;j<=n;j++)
10         cin>>a[i][j];//输入方格
11     
12     for(i=1;i<=n;i++)
13       for(j=1;j<=n;j++)    
14           if(a[i][j]!=1){ //大于1
15           bool flag =false ;//定义一个标志
16           for(int s=1;s<=n&&!flag;s++)   //就样例一(3,1)举例
17               for(int t=1;t<=n&&!flag;t++)
18                   flag=(a[i][j]==a[i][s]+a[t][j]); //(3,1)==(3,1)+(1,1),flag=false,t++,
//(3,1)==(3,1)+(2,1)……都不满足,返回上个循环,以此类推
19 if(!flag) { 20 printf("No\n");return 0; 21 } 22 } 23 printf("Yes\n"); 24 return 0; 25 }

 

转载于:https://www.cnblogs.com/z-712/p/7388123.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值