D.宇恒棋

EOJ传送门

Q小方以前不会下宇恒棋,现在他会了,所以他急切的想教会你。

宇恒棋的规则是这样的:在一个 n×m 的棋盘上,QQ小方和你各有一枚棋子。你们轮流行动,每一次轮到一方的回合时,他必须把自己的棋子往上,下,左或右移动一格,但不能超出棋盘的边界。如果这一方的棋子吃掉了另一方的棋子,也就是这一方在他的回合将自己的棋子移动到了另一方棋子的位置上,那这一方就赢得了这局比赛。

单单讲给你听肯定是不够的,为了表现自己,QQ小方现在要考考你。

现在,该轮到QQ小方行动了。QQ小方想知道在双方采取最优策略的情况下,比赛结果究竟会是怎样的。

输入格式
第一行两个数 n,m ( 1≤n,m≤100 ),代表棋盘有 n 行 m 列。

第二行四个整数 x1,y1,x2,y2 ( 1≤x1,x2≤n,1≤y1,y2≤m ),代表QQ小方的棋子在第 x1 行 y1 列,而你的棋子在第 x2 行 y2 列,保证一开始给出的两个棋子坐标不会重合。

输出格式
一行一个字符串,如果你赢则输出 Win,如果QQ小方赢则输出 Lose,如果平局则输出 Tie。
simple input
2 2
1 1 2 2

simple output
Win

simple input
3 3
2 2 2 3

simple output
Lose

题目中虽然提到了平局,但是仔细想一下你就会发现根本不存在平局的局面,那么我们来整理一下写题的思路,首先不管两个棋在什么位置他们之间的距离都等于abs((x1 - x2) + (y1 - y2)),如果相距是单数你便输,反之你赢

AC代码

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    int m, n;
    cin >> m >> n;
    int x1, x2, y1, y2;
    cin >> x1 >> x2 >> y1 >> y2;
    int sum = (x2 - x1) + (y2 - y1);
    int ans = abs(sum);
    if(ans % 2 == 0)
        cout << "Win" << endl;
    else
        cout << "Lose" << endl;
}

原创转载请注明出处