题意
一个 \(n\times m\) 的矩阵,从 \((1,1)\) 走到 \((n,m)\)。
在 \((x,y)\) 时:
- 走向 \((x,y+1)\),获得 \(x\) 分;
- 走向 \((x+1,y)\),获得 \(y\) 分。
问是否可以在走到终点时恰好获得 \(k\) 分。
思路
因为是网格图且只向下或右走,故所有的行和列都会恰好走一遍,则:下 \(+\) 右 \(=nm-1\)
所以判断一下 \(nm+1\) 是否等于 \(k\) 即可。
时间复杂度为 \(O(1)\times t=O(t)\)。
代码
#include <iostream>
#include <cstdio>
using namespace std;
int t, n, m, k;
int main()
{
scanf("%d", &t);
while (t--)
{
scanf("%d%d%d", &n, &m, &k);
if (n * m - 1 == k)
{
puts("YES");
}
else
{
puts("NO");
}
}
return 0;
}