【题目链接】http://www.ifrog.cc/acm/problem/1003

【题意】其实就是开心消消乐,问给你一个消除的步骤,是否是合法的消除。

【解题方法】分类模拟就行了。

【AC代码】超长的模拟

//
//Created by just_sort 2016/9/25 15:11
//Copyright (c) 2016 just_sort.All Rights Reserved
//

#include <set>
#include <map>
#include <queue>
#include <stack>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;

char s[10][10];

int main()
{
    while(scanf("%s",s[1]+1)!=EOF)
    {
        for(int i=2; i<=8; i++) scanf("%s",s[i]+1);
        int x1,x2,y1,y2;
        scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
        if(y1==y2&&x1==x2-1)
        {
            if(s[x1][y1-1]==s[x1][y1+1]&&s[x1][y1-1]==s[x2][y2])
            {
                puts("Ok!");
            }
            else if(s[x2][y2-1]==s[x2][y2+1]&&s[x2][y2-1]==s[x1][y1])
            {
                puts("Ok!");
            }
            else if(s[x1-1][y1]==s[x1-2][y1]&&s[x1-1][y1]==s[x2][y2])
            {
                puts("Ok!");
            }
            else if(s[x2+1][y1]==s[x2+2][y1]&&s[x2+1][y1]==s[x1][y1])
            {
                puts("Ok!");
            }
            else if(s[x1][y1-1]==s[x1][y1-2]&&s[x1][y1-1]==s[x2][y2])
            {
                puts("Ok!");
            }
            else if(s[x1][y1+1]==s[x1][y1+2]&&s[x1][y1+1]==s[x2][y2])
            {
                puts("Ok!");
            }
            else if(s[x2][y2-1]==s[x2][y2-2]&&s[x2][y2-1]==s[x1][y1])
            {
                puts("Ok!");
            }
            else if(s[x2][y2+1]==s[x2][y2+2]&&s[x2][y2+1]==s[x1][y1])
            {
                puts("Ok!");
            }
            else
            {
                puts("Illegal move!");
            }
        }
        else if(y1==y2&&x1-1==x2)
        {
            if(s[x2][y2-1]==s[x2][y2+1]&&s[x2][y2-1]==s[x1][y1])
            {
                puts("Ok!");
            }
            else if(s[x1][y1-1]==s[x1][y1+1]&&s[x1][y1-1]==s[x2][y2])
            {
                puts("Ok!");
            }
            else if(s[x2-1][y1]==s[x2-2][y1]&&s[x2-1][y1]==s[x1][y1])
            {
                puts("Ok!");
            }
            else if(s[x1+1][y1]==s[x1+2][y1]&&s[x1+1][y1]==s[x2][y2])
            {
                puts("Ok!");
            }
            else if(s[x1][y1-1]==s[x1][y1-2]&&s[x1][y1-1]==s[x2][y2])
            {
                puts("Ok!");
            }
            else if(s[x1][y1+1]==s[x1][y1+2]&&s[x1][y1+1]==s[x2][y2])
            {
                puts("Ok!");
            }
            else if(s[x2][y2-1]==s[x2][y2-2]&&s[x2][y2-1]==s[x1][y1])
            {
                puts("Ok!");
            }
            else if(s[x2][y2+1]==s[x2][y2+2]&&s[x2][y2+1]==s[x1][y1])
            {
                puts("Ok!");
            }
            else
            {
                puts("Illegal move!");
            }
        }
        else if(x1==x2&&y2+1==y1)
        {
            if(s[x2-1][y2]==s[x2+1][y2]&&s[x2-1][y2]==s[x1][y1])
            {
                puts("Ok!");
            }
            else if(s[x1-1][y1]==s[x1+1][y1]&&s[x1-1][y1]==s[x2][y2])
            {
                puts("Ok!");
            }
            else if(s[x2][y2-1]==s[x2][y2-2]&&s[x2][y2-1]==s[x1][y1])
            {
                puts("Ok!");
            }
            else if(s[x1][y1+1]==s[x1][y1+2]&&s[x1][y1+1]==s[x2][y2])
            {
                puts("Ok!");
            }
            else if(s[x2-1][y2]==s[x2-2][y2]&&s[x2-1][y2]==s[x1][y1])
            {
                puts("Ok!");
            }
            else if(s[x2+1][y2]==s[x2+2][y2]&&s[x2+1][y2]==s[x1][y1])
            {
                puts("Ok!");
            }
            else if(s[x1-1][y1]==s[x1-2][y1]&&s[x1-1][y1]==s[x2][y2])
            {
                puts("Ok!");
            }
            else if(s[x1+1][y1]==s[x1+2][y1]&&s[x1+1][y1]==s[x2][y2])
            {
                puts("Ok!");
            }
            else
            {
                puts("Illegal move!");
            }
        }
        else if(x1==x2&&y1+1==y2)
        {
            if(s[x1-1][y1]==s[x1+1][y1]&&s[x1-1][y1]==s[x2][y2])
            {
                puts("Ok!");
            }
            else if(s[x2-1][y2]==s[x2+1][y2]&&s[x2-1][y2]==s[x1][y1])
            {
                puts("Ok!");
            }
            else if(s[x1][y1-1]==s[x1][y1-2]&&s[x1][y1-1]==s[x2][y2])
            {
                puts("Ok!");
            }
            else if(s[x2][y2+1]==s[x2][y2+2]&&s[x2][y2+1]==s[x1][y1])
            {
                puts("Ok!");
            }
            else if(s[x2-1][y2]==s[x2-2][y2]&&s[x2-1][y2]==s[x1][y1])
            {
                puts("Ok!");
            }
            else if(s[x2+1][y2]==s[x2+2][y2]&&s[x2+1][y2]==s[x1][y1])
            {
                puts("Ok!");
            }
            else if(s[x1-1][y1]==s[x1-2][y1]&&s[x1-1][y1]==s[x2][y2])
            {
                puts("Ok!");
            }
            else if(s[x1+1][y1]==s[x1+2][y1]&&s[x1+1][y1]==s[x2][y2])
            {
                puts("Ok!");
            }
            else
            {
                puts("Illegal move!");
            }
        }
        else{
            puts("Illegal move!");
        }
    }
    return 0;
}