1. 程式人生 > >WOJ-477 Hong Kong Journalists

WOJ-477 Hong Kong Journalists

點選這裡檢視題目
這裡有個結論——象棋馬走日,將馬放在至少3x4大小的棋盤上的任意一個位置,馬能夠遍歷棋盤上的任意一個位置。不信可以自己畫個棋盤試試。(反正我也不知道怎麼證明,一行行增大棋盤發現的結論,大概可以用數學歸納法。)

而3x3的棋盤,將馬放在邊上,正中間那個點是無論如何遍歷不到的。至於2xM的棋盤,馬到達能夠遍歷到的點的路線是唯一的。

接下來是重點:

大前提:整個棋盤能夠被馬遍歷。
①馬走到其45°方向上的任意一個格子!步數一定是偶數!
②馬走到相鄰格子上!步數一定是奇數!

(真心別問我結論怎麼來的,大概是象棋下多了。)
(題外話——一個小技巧教你下象棋時高效用馬/防馬:走到與馬形成3x3正方形的對角線上,這樣,對方的馬要繼續抓你的子,至少需要走3步才能把你那個字納入攻擊範圍,對方基本會放棄追殺……)

#include<iostream>
using namespace std;

int main()
{

    int n,m;
    cin>>n>>m;
    if(n>m)
    {
        n=n^m;m=n^m;n=n^m;
    }
    if(n<2)
    {
        cout<<-1<<endl;
    }
    else if(n==2)
    {
        if(m%3!=0||(m/3)%2!=1)cout<<-1<<endl;
        else
cout<<1<<endl; } else { cout<<((m-n)%2)<<endl; } }