聪明的鱼儿子
Description
鱼头是一个喜欢创造的人,他发明了一种游戏。给出一个m×n的棋盘。他和他的儿子分别有一个棋子随机的放在棋盘上的两个位置,分别为(x1,y1),(x2,y2).且x1≠x2且y1≠y2.坐标均为整数,且左下角为(0,0)。两个人分别移动自己的棋子(横竖走,步数>=1),但棋子移动不能经过另外一个人所在的行,或列。最后谁无路可走谁就输。鱼头是一个谦让的父亲,他让儿子选择谁先走。但聪明的鱼儿子百战百胜。鱼头终于忍不住了,要自己决定谁先手,但他实在不知道该如何选择,于是请你来帮忙了,记住,鱼头和他的儿子都很聪明,都能抓住对手的每一个破绽,走出完美的一步。
Input
多组测试数据以文件尾结束。输入的第一行为两个int型的整数m,n;然后是m×n范围内的两个坐标x1,y1,x2,y2。
Output
如果鱼头应该先手,则输出” former”,后手的话输出“hinder”.
Sample Input
6 6
1 1 2 2
Sample Output
hinder
刚做的一道acm练习题,太恶心了,刚看到第一眼,觉得变态,想了想,觉得好像无从下手,尝试了好几种常用方法,毫无头绪,晚上时候,突然想起来以前做过的一道竞赛题,那道题也是毫无思路,最后答案出来,惊奇发现,答案居然是人为的算出来,然后放到程序里面;顺着这个思路,找了一副五子棋,尝试的试了几次,终于发现了规律:|x1-x2|==|y1-y2|时候,后手能赢;|x1-x2|!=|y1-y2|时候,先手能赢(可以自己找副棋子试试,不过注意:鱼头和他的儿子都很聪明,都能抓住对手的每一个破绽,走出完美的一步),我是个acm小白,希望能给和我一样的同学一点帮助吧!好了,上源码:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int m,n;
while(cin>>m>>n){
int x1,y1,x2,y2;
cin>>x1>>y1>>x2>>y2;
if(abs(x1-x2)==abs(y1-y2))
cout<<"hinder\n";
if(abs(x1-x2)!=abs(y1-y2))
cout<<"former\n";
}
return 0;
}