poj 4001 Xiangqi 模拟 顺带关于模拟的一番吐槽

简介:

  很多人都觉得模拟题很恶心,各种长代码。但其实我觉得模拟题是最有美感的一类题,求同存异在模拟中表现的淋漓尽致。

  遇到模拟题,不应急于下笔,应首先分析问题共性,抽象出相同的模型。代码尽量重用。

  其次寻找stl中合适的数据结构,实在没有再进行手写。因为模拟题范围一般不大,stl完全可以接受,而且完全面向对象的想法非常适合模拟各种行为

  最后再按模块编码,实现目标。

  模拟的过程应该是很简约,具有美感高度抽象的,而绝非杂乱无章,各种复制粘贴的

/*
author:jxy
lang:C/C++
university:China,Xidian University
**If you need to reprint,please indicate the source**
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std;
char org[11][10];
const int x[4]={1,0,-1,0};
const int y[4]={0,1,0,-1};
bool killed(int X,int Y)
{
    bool nemp;
    int i;
    int tx,ty,xx,yy;
    for(i=0;i<4;i++)
    {
        tx=X+x[i];ty=Y+y[i];
        nemp=false;
        if(x[i]) //判断马
        {
            xx=tx+x[i];
            if((org[tx][ty-1]==0&&org[xx][ty-1]=='H')||(org[tx][ty+1]==0&&org[xx][ty+1]=='H'))return 1;
        }
        else
        {
            yy=ty+y[i];
            if((org[tx-1][ty]==0&&org[tx-1][yy]=='H')||(org[tx+1][ty]==0&&org[tx+1][yy]=='H'))return 1;
        }
        while(tx>=1&&tx<=10&&ty>=1&&ty<=9) //判断单向
        {
            if((!nemp&&(org[tx][ty]=='R'||org[tx][ty]=='G'))||(nemp&&org[tx][ty]=='C'))return 1;
            if(org[tx][ty]!=0)
            {
                if(nemp)break;
                nemp=true;
            }
            tx+=x[i]; ty+=y[i];
        }
    }
    return 0;

}
int main()
{
    int n,X,Y;
    while(~scanf("%d%d%d",&n,&X,&Y)&&n+X+Y)
    {
        int i,tx,ty;
        char c;
        memset(org,0,sizeof(org));
        for(i=0;i<n;i++)
        {
            scanf(" %c%d%d",&c,&tx,&ty);
            org[tx][ty]=c;
        }
        bool ok=false;
        for(i=0;i<4;i++)
        {
            tx=X+x[i];ty=Y+y[i];
            if(tx<1||tx>3||ty<4||ty>6)continue;
            if(killed(tx,ty)==0)ok=true;
        }
        printf("%s\n",ok?"NO":"YES");
    }
}



目录
相关文章
c和c++中time , srand, rand 函数的使用
c和c++中time , srand, rand 函数的使用
|
人工智能 自然语言处理 开发者
通义千问升级免费开放1000万字长文档处理功能:利好与期待功能
最近技术圈的重大消息,那就是阿里通义千问在3月22日进行了重磅升级,向所有用户免费开放了1000万字的长文档处理功能,成为全球文档处理容量最大的AI应用。据悉,通义千问的文档处理容量和能力已经超越了全世界市场上的其他AI应用,包括ChatGPT等。关于阿里云的通义千问,不用多说,作为开发者大部分都知道且使用过,而且在日常开发过程中也或多或少会使用到,关于这次升级将会带来哪些利好?又有哪些功能值得期待呢?那么本文就来一探究竟,我们一起来看这次升级的影响,欢迎大家在评论区分享自己看法。
989 2
通义千问升级免费开放1000万字长文档处理功能:利好与期待功能
高德地图目前是哪个集团下的公司?
其实在2014年02月,阿里巴巴就斥资11亿美元,完成对高德地图的全资收购,所以高德地图目前是属于阿里巴巴集团下的公司了。
3246 0
|
12月前
|
编解码
视频分辨率和帧率
【10月更文挑战第7天】视频分辨率和帧率
|
9月前
|
Java API 调度
SpringBoot整合XXL-JOB【01】- 初识XXL-JOB
XXL-JOB 是一个分布式任务调度平台,设计目标为开发迅速、学习简单、轻量级、易扩展。它解决了分布式环境下定时任务重复执行的问题,无需额外加锁,降低了维护成本。XXL-JOB 由调度中心和执行器两部分组成,前者管理任务,后者执行具体逻辑,使代码结构更清晰。适用于多机部署场景,支持统一管理任务的启停和频率调整。
1327 8
SpringBoot整合XXL-JOB【01】- 初识XXL-JOB
|
前端开发
[巨详细]安装HBuilder-X教程
【6月更文挑战第6天】下载HBuilder-X 官方网址:https://www.dcloud.io/ 点击网址 ,打开官网
1010 1
【2024美国大学生数学建模竞赛】2024美赛E题 问题分析、数学模型、实现代码、完整论文
本文是关于2024美国大学生数学建模竞赛E题的预告,承诺在题目发布后提供问题分析、数学模型、实现代码和完整论文的逐步更新。
362 2
【2024美国大学生数学建模竞赛】2024美赛E题 问题分析、数学模型、实现代码、完整论文
打印机,如何解决打印机打印有划痕的问题,内部需要清洗,找盆水,清洗,硒鼓盒拆开,怎样更容易放进去,头部朝下的地方先放进去,倾斜向下
打印机,如何解决打印机打印有划痕的问题,内部需要清洗,找盆水,清洗,硒鼓盒拆开,怎样更容易放进去,头部朝下的地方先放进去,倾斜向下
|
存储 分布式计算 安全
MaxCompute的性能
【5月更文挑战第6天】MaxCompute的性能
248 2
|
存储 算法 计算机视觉
LabVIEW二维码生成与识别
LabVIEW二维码生成与识别
203 0