1. 程式人生 > >Codeforces 821A Okabe and Future Gadget Laboratory 題解

Codeforces 821A Okabe and Future Gadget Laboratory 題解

can printf else std bre 中間 sub 同一行 clu

此文為博主原創題解,轉載時請通知博主,並把原文鏈接放在正文醒目位置。

題目鏈接:http://codeforces.com/problemset/problem/821/A

時間限制:2秒

空間限制:256M

  Okabe要改進他的實驗室。實驗室用一個n*n的正方形網格表示(n為正整數)。他認為,一個“好實驗室”的網格內每一個不等於1的數字都可以用同一行和同一列的某個數字之和表示。換句話說,對於任意x,y1 ≤ x, y ≤ n ax, y ≠ 1,),存在兩個數

st,使得ax, y = ax, s + at, y其中ai, j 表示第i行第j列的整數

  幫助Okabe找出以下的實驗室中哪個符合他的要求。

輸入

第一行描述實驗室的大小n(1 ≤ n ≤ 50)

接下來的n行中,每行有n個整數(中間用空格隔開),表示實驗室網格。

i行第j列的整數是ai, j (1 ≤ ai, j ≤ 105

).

輸出

如果實驗室符合要求,輸出“Yes”,否則輸出“No”

不考慮大小寫問題

樣例輸入#1

3
1 1 2
2 3 1
6 4 1

樣例輸出#1

Yes

樣例輸入#2

3
1 5 2
1 1 1
1 2 3

樣例輸出#2

No

註釋

在樣例1中,左下角的6可以表示為24的和。同樣地,網格中所有非1的數字都可以分別用同行、同列的兩數之和表示,因此輸出“Yes.

在樣例2中,5不能被表示為同行同列的兩數字之和,因此輸出“No”.

分析:

空間和時間都很充足,直接無腦暴力算_(:з」∠)_

特別註意的是如果輸入所有的數字都是1,也應該輸出“Yes”.

醜陋的AC代碼:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cmath>
 5 
 6 using namespace std;
 7 int map[60][60];
 8 bool flag,ok = true;
 9 
10 int main()
11 {
12     int n;
13     scanf("%d",&n);
14     for(int i = 1;i <= n;i ++)
15         for(int j = 1;j <= n;j ++)
16         {
17             scanf("%d",&map[i][j]);
18             if(map[i][j] != 1)
19                 ok = false;
20         }
21     if(ok)
22     {
23         printf("Yes\n");
24         return 0;
25     }
26     for(int i = 1;i <= n;i ++)
27         for(int j = 1;j <= n;j ++)
28         {
29             if(map[i][j] == 1)
30                 continue;
31             else
32             {
33                 flag = false;
34                 for(int a = 1;a <= n;a ++)
35                 {//固定列 
36                     if(a == j)    continue;
37                     for(int b = 1;b <= n;b ++)
38                     {
39                         if(b == i)    continue;
40                         if(map[i][a] + map[b][j] == map[i][j])
41                             {    flag = true;break;    }
42                     }
43                     if(flag)    break;
44                 }
45                 if(!flag)
46                 {
47                     printf("No\n");
48                     return 0;
49                 }
50             }
51         }
52     if(flag) printf("Yes\n");
53     return 0;
54 }

Codeforces 821A Okabe and Future Gadget Laboratory 題解