POJ 2996 Help Me with the Game (模拟)

POJ 2996 Help Me with the Game (模拟)题目链接:http://poj.org/problem?id=2996POJ训练计划中的模拟都是非常棒的模拟,也非常有代表性。这个题讲的是给你一个国际象棋棋盘,敲代码打印出黑白两方的棋子。以及棋子的坐标。可是须要注意的国际棋盘的坐标问题例如以下图这个国际棋盘能够看到数字轴和字母轴的方向以及增减关系。所以在这个题的统计的时候须要进行坐标转换。由于已经做过类似的方法…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

题目链接:http://poj.org/problem?

id=2996

POJ训练计划中的模拟都是非常棒的模拟,也非常有代表性。

这个题讲的是给你一个国际象棋棋盘,敲代码打印出黑白两方的棋子。以及棋子的坐标。

可是须要注意的国际棋盘的坐标问题

例如以下图这个国际棋盘

POJ 2996 Help Me with the Game (模拟)

能够看到数字轴和字母轴的方向以及增减关系。

所以在这个题的统计的时候须要进行坐标转换。由于已经做过类似的方法了,这个也不是问题。

 

总之就是个模拟,代码例如以下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

struct node
{
    char x,y;
}zb[10000];

char MAP[20][40];

int cmp (const void * a,const void * b)
{
    struct node *ta = (struct node *)a;
    struct node *tb = (struct node *)b;

    if (ta->y == tb->y)
        return ta->x - tb->x;

    return ta->y - tb->y;
}

int cmp1 (const void * a,const void * b)
{
    struct node *ta = (struct node *)a;
    struct node *tb = (struct node *)b;

    if (ta->y == tb->y)
        return ta->x - tb->x;

    return tb->y - ta->y;
}

int fin(char c)
{
    int i,k;
    int s = 0;
    int x = 0,y = 0;;
    for (i = 1,y = 0;i < 17;y++,i += 2)
    {
        for (k = 2,x = 0;k < 33;x++,k += 4)
            if (MAP[i][k] == c)
            {
                zb[s].x = x;
                zb[s++].y = 8 - y;
                //printf ("!%d - %d!\n",x,8 - y);
            }
    }

    return s;
}

int main()
{
    int i,k;
    int n;
    for (i = 0;i < 17;i++)
        scanf ("%s",MAP[i]);

    printf ("White: ");

    n = fin('K');
    qsort (zb,n,sizeof (zb[0]),cmp);
    for (i = 0;i < n;i++)
        printf ("K%c%d,",zb[i].x + 'a',zb[i].y);

    n = fin('Q');
    qsort (zb,n,sizeof (zb[0]),cmp);
    for (i = 0;i < n;i++)
        printf ("Q%c%d,",zb[i].x + 'a',zb[i].y);

    n = fin('R');
    qsort (zb,n,sizeof (zb[0]),cmp);
    for (i = 0;i < n;i++)
        printf ("R%c%d,",zb[i].x + 'a',zb[i].y);

    n = fin('B');
    qsort (zb,n,sizeof (zb[0]),cmp);
    for (i = 0;i < n;i++)
        printf ("B%c%d,",zb[i].x + 'a',zb[i].y);

    n = fin('N');
    qsort (zb,n,sizeof (zb[0]),cmp);
    for (i = 0;i < n;i++)
        printf ("N%c%d,",zb[i].x + 'a',zb[i].y);

    n = fin('P');
    qsort (zb,n,sizeof (zb[0]),cmp);
    for (i = 0;i < n;i++)
    {
        printf ("%c%d",zb[i].x + 'a',zb[i].y);

        if (i < n - 1)
            printf(",");
        else
            printf ("\n");
    }

    printf ("Black: ");

    n = fin('k');
    qsort (zb,n,sizeof (zb[0]),cmp1);
    for (i = 0;i < n;i++)
        printf ("K%c%d,",zb[i].x + 'a',zb[i].y);

    n = fin('q');
    qsort (zb,n,sizeof (zb[0]),cmp1);
    for (i = 0;i < n;i++)
        printf ("Q%c%d,",zb[i].x + 'a',zb[i].y);

    n = fin('r');
    qsort (zb,n,sizeof (zb[0]),cmp1);
    for (i = 0;i < n;i++)
        printf ("R%c%d,",zb[i].x + 'a',zb[i].y);

    n = fin('b');
    qsort (zb,n,sizeof (zb[0]),cmp1);
    for (i = 0;i < n;i++)
        printf ("B%c%d,",zb[i].x + 'a',zb[i].y);

    n = fin('n');
    qsort (zb,n,sizeof (zb[0]),cmp1);
    for (i = 0;i < n;i++)
        printf ("N%c%d,",zb[i].x + 'a',zb[i].y);

    n = fin('p');
    qsort (zb,n,sizeof (zb[0]),cmp1);
    for (i = 0;i < n;i++)
    {
        printf ("%c%d",zb[i].x + 'a',zb[i].y);

        if (i < n - 1)
            printf(",");
        else
            printf ("\n");
    }

    return 0;
}

 

我的博客:http://blog.csdn.net/codehypo

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170050.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月12日 上午8:00
下一篇 2022年8月12日 上午8:00


相关推荐

  • mbedTLS简介

    mbedTLS简介mbedTLS 简介 mbedTLS 的背景介绍关于 mbedTLS 的简要概括 mbedTLS 常用结构体 1 公钥算法类型 mbedtls pk type t2 摘要算法类型 mbedtls md type t3 公钥上下文 mbedtls pk context4 解析证书得到的 mbedtls pk info tmbedTLS 使用事例 mbedTLS API 分析参考文章 mbedTLS 的背景介绍 MbedTLS 前身是开源加密算法库 PolarSLL 现已被 arm 公司收购并由 arm 技术团队进行维护更新 是对 TLS 和 SSL 协

    2026年3月18日
    2
  • 第2章 数据库关系模型—数据库原理及应用

    第2章 数据库关系模型—数据库原理及应用第2章数据库关系模型作业常用的关系查询操作包括选择、投影、连接、并、交等。v 实体完整性是指关系表的属性组成必须是完整的。x 自然连接是一种等值连接。v 在参照完整性中,可以定义级联操作。v 用户自定义完整性可以实施数据的业务约束。v 每个关系是一个二维表,但二维表不一定是关系。v 关系中复合键至少包含两个属性。v 代理键是为了唯一标识关系的不同元组,需要在表单或报表中显示…

    2022年7月16日
    20
  • JavaScript节流 防抖

    JavaScript节流 防抖说明 此文章仅供参考和学习使用 转载请注明出处 1 防抖 阻止一个函数在很短的时间间隔内连续调用 只有在上一次函数调用执行后达到规定的时间间隔 才能进行下一次调用 但要保证一个一个累计最小调用的时间 相当于将若干函数的调用 合并为在某个固定的时间间隔内的一次函数的调用 只要不是最后一次触发 就不异步执行请求 应用场景 函数节流一般用于 onresize onscroll 等短时间内会多

    2026年3月26日
    2
  • 最全的大数据采集方法分类

    最全的大数据采集方法分类数据采集的设计,几乎完全取决于数据源的特性,毕竟数据源是整个大数据平台蓄水的上游,数据采集不过是获取水源的管道罢了。一、大数据环境下的数据处理需求大数据环境下数据来源非常丰富且数据类型多…

    2022年5月14日
    91
  • #标题 已知从键盘上任意输入一个3位整数,编译计算并输出它的逆序数

    #标题 已知从键盘上任意输入一个3位整数,编译计算并输出它的逆序数

    2021年9月27日
    92
  • Linux系统安装Python3环境(超详细)

    Linux系统安装Python3环境(超详细)本文基于如下Linux系统版本:1、默认情况下,Linux会自带安装Python,可以运行python–version命令查看,如图:我们看到Linux中已经自带了Python2.7.5。再次运行python命令后就可以使用python命令窗口了(Ctrl+D退出python命令窗口)。2、查看Linux默认安装的Python位置看到/usr/bin/python…

    2022年5月26日
    65

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号