3509. 棋盘遍历问题
原题传送:AcWing 3509. 棋盘遍历问题
给定一个 N × M N \times M N×M 的方格棋盘,请问一个棋子从棋盘左上角出发,能否在不重复经过棋盘上的方格的情况下,遍历整个棋盘一次再回到起点。
输入格式
输入包含多组测试数据。
每组数据占一行,包含两个整数 N , M N,M N,M 。
输出格式
每组数据输出一行一个结果,如果能回到起点则输出 Y
,否则输出 N
。
数据范围
1 ≤ N , M ≤ 10 1 \le N,M \le 10 1≤N,M≤10
输入样例:
1 2
2 2
输出样例:
N
Y
思路:
特判一个点的时候可以回到起点,当方格数为奇数或者为一行或一列的情况时,不能回到起点。
题解:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, m;
while(cin >> n >> m)
{
if(n == 1 && m == 1) cout << "Y" << endl;
else if(n % 2 && m % 2) cout << "N" << endl;
else if(n == 1 || m == 1) cout << "N" << endl;
else cout << "Y" << endl;
}
return 0;
}