Board
发布日期:2021-07-01 00:14:26 浏览次数:2 分类:技术文章

本文共 1026 字,大约阅读时间需要 3 分钟。

链接:

来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒

空间限制:C/C++ 1048576K,其他语言2097152K
64bit IO Format: %lld

题目描述

恬恬有一个nx n的数组。她在用这个数组玩游戏:

开始时,数组中每一个元素都是0。
恬恬会做某些操作。在一次操作中,她可以将某一行的所有元素同时加上一个值,也可以将某一列的所有元素同时加上一个值。
在几次操作后,一个元素被隐藏了。你能帮助她回忆隐藏的数是几吗?

输入描述

第一行一个整数n(1≤ n≤ 1000)。

接下来n行每行n个整数表示数组a。
第(i+1)行的第j个元素表示aij(aij=-1或0≤ aij ≤ 10000)。-1表示隐藏的元素。

输出描述

仅一个整数表示答案。

输入

3

1 2 1
0 -1 0
0 1 0

输出

1

解题思路

 如图,AB,CD在同一行,AC,BD在同一列。

假如AB这一行加x,CD这一行加y,AC这一列加p,BD这一列加q。

那么A加了x+p,B加了x+q,c加了y+p,d加了y+q。

很容易发现AB之差等于CD之差。

所以我们现在已经知道了其中的三个,求另外一个也是很简单的事情。

#include 
int n, m, x, y, map[1010][1010];int main(){ scanf("%d", &n); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { scanf("%d", &map[i][j]); if (map[i][j] < 0) x = i, y = j; } } if (!x && !y) m = map[x + 1][y] - map[x + 1][y + 1] + map[x][y + 1]; else if (!x && y) m = map[x + 1][y] - map[x + 1][y - 1] + map[x][y - 1]; else if (x && !y) m = map[x - 1][y] - map[x - 1][y + 1] + map[x][y + 1]; else m = map[x - 1][y] - map[x - 1][y - 1] + map[x][y - 1]; printf("%d\n", m); return 0;}

 

转载地址:https://lzyws739307453.blog.csdn.net/article/details/82950394 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Circle
下一篇:Mountain

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月10日 10时00分21秒