美文网首页
中国象棋将帅问题

中国象棋将帅问题

作者: lpworkstudy | 来源:发表于2017-09-12 15:10 被阅读0次

问题

A,B二子被限制在己方3 X 3的格子里运动,A,B分别可以横向或纵向移动,但不能沿对角线移动且A,B不能处于同一纵向直线上。请写出一个程序,输出AB所有的合法位置,要求在代码中只能使用一个字节存储变量。

image.png

不考虑题目只能使用一个字节存储的限制

#include<stdio.h>
int main(void)
{
    int i,j;
    for (i = 1; i <= 9; i++)
        for(j = 1; j <= 9; j++)
    {
        if((i % 3 == 0) && (j % 3 != 0))
            printf("A = %d, B = %d\n",i,j);
        else if ((i % 3 == 1)&&(j % 3 != 1))
            printf("A = %d, B = %d\n",i,j);
        else if ((i % 3 == 2) && (j %3 != 2))
            printf("A = %d, B = %d\n",i,j);
    }

    return 0;
}

这种方法最为笨拙,效率也不会高
缩短一些

使用字节类型变量

int main(void)
{
    BYTE i = 81;
    while(i--)
    {
        if (i / 9 % 3 == i %9 %3)
            continue;
        printf("A = %d, B = %d\n",i / 9 + 1, i % 9 + 1);
    }

    return 0;
}

最高效方法

#include<stdio.h>
struct {

unsigned char a:4;
unsigned char b:4;
} item;

int main(void)
{
    for (item.a = 1; item.a <=9; item.a++)
        for (item.b = 1; item.b <= 9; item.b++)
            if(item.a % 3 != item .b % 3)
            printf("A = %d, B = %d\n",item.a,item.b);

    return 0;
}

相关文章

  • 中国象棋将帅问题

    问题 A,B二子被限制在己方3 X 3的格子里运动,A,B分别可以横向或纵向移动,但不能沿对角线移动且A,B不能处...

  • C语言讨论象棋将帅问题,代码短又美!

    关于中国象棋将帅位置的简单问题,如下图所示,写一个程序输出将、帅的合法位置。 分析与解法 问题的本身并不复杂,只要...

  • 中国象棋VS国际象棋

    源远流长的中国象棋等级鲜明不可逾越,将帅和兵卒是不可能逆转的;制度严密无法越轨,即使是身为首脑的将帅也无法走出...

  • BoP——1.2将帅问题

    在存储空间限制的情况下如何存储数据 问题很简单,就是在中国象棋棋盘上,当只剩下将和帅的时候,问将帅有多少中可能的所...

  • 象棋限制的艺术

    象棋大加挞伐,其中最重要的论点即是:中国象棋桎梏太多,将帅被九宫限制,马被“别腿”限制,象被“象眼”限制,兵卒不准...

  • 中国象棋:玩的不仅仅是棋,更是帝王厚黑术

    马走日,象走田。中国象棋的内核与智慧,就在这一日一田之间,帝王的制衡与博弈,最后都有厚黑的底色。 谁才是将帅最器重...

  • 揭棋

    一、揭棋走法简介 揭棋是中国象棋的一个变种,是一种明暗结合的下法。 在摆放棋子时,双方把将帅拿出来放在棋盘初始位置...

  • 《中国象棋》检测题

    《中国象棋》检测题 【一】,《中国象棋》最早盛行在我国( )时代。交战双方各有( )...

  • 2017-12-13

    中国象棋

  • ios 绘图 UIBezierPath 中国象棋棋盘

    ios 绘图 UIBezierPath 中国象棋棋盘 先看看效果 开发思路 中国象棋基本格式 纵坐标 9 横坐标 ...

网友评论

      本文标题:中国象棋将帅问题

      本文链接:https://www.haomeiwen.com/subject/zwrcsxtx.html