美文网首页
棋子翻转

棋子翻转

作者: Vincy_ivy | 来源:发表于2019-05-05 09:58 被阅读0次

Title

Think

可以将char类型储存为int类型,在判断是否棋子全翻时可通过其是否全为1或全为0来判断
递归自动回溯,不需要人为

代码

    #include<stdio.h>
    #include<iostream>
    using namespace std;
    int chess[4][4];
    int c=33;
    void build()
    {
        char c;
        int i,j;
        for(i=0;i<4;i++)
            for(j=0;j<4;j++)
            {
                cin>>c;
                if(c=='a')
                    chess[i][j]=0;
                else
                    chess[i][j]=1;
        }
    }
    void turn(int x,int y)
    {
         if(x>=0&&x<=3&&y>=0&&y<=3)
            chess[x][y]=!chess[x][y];
    }
    void flip(int s)
    {
        int i=s/4;
        int j=s%4;
        turn(i,j);
        turn(i+1,j);
        turn(i,j+1);
        turn(i-1,j);
        turn(i,j-1);
    }
    int complete()
    {
        int i,j,s1=0;
        for(i=0;i<4;i++)
            for(j=0;j<4;j++)
                s1+=chess[i][j];
        if(s1%16)
           return 0;
        else
            return 1;
    }
    void dfs(int s,int b)
    {
         if(complete())
         {
           if(c>b)
               c=b;
            return;
         }
        if(s>=16)
            return;
        dfs(s+1,b);
        flip(s);
//这里不用s+1的 原因是为了turn的i和j更加准确
        dfs(s+1,b+1);
        flip(s);
    }
    int main()
    {
        build();
        dfs(0,0);
        if(c==33)
           printf("Impossible\n");
        else
            printf("%d\n",c);
        return 0;
    }

相关文章

  • 棋子翻转

    Title Think 可以将char类型储存为int类型,在判断是否棋子全翻时可通过其是否全为1或全为0来判断递...

  • 基于汇编语言实现的彩色黑白棋游戏

    一、软件背景介绍 1.1 背景介绍 黑白棋在西方和日本很流行。游戏通过相互翻转对方的棋子,最后以棋盘上谁的棋子多来...

  • [源码和文档分享]基于汇编语言实现的彩色黑白棋游戏

    一、软件背景介绍 1.1 背景介绍 黑白棋在西方和日本很流行。游戏通过相互翻转对方的棋子,最后以棋盘上谁的棋子多来...

  • cocos2d-x3.14中国象棋AI(五)移动棋子1

    我们在选中棋子之后理所当然就是要移动棋子,要移动棋子我们不知需要知道选中的棋子点信息,还需要知道选中棋子后玩家下一...

  • 棋子

    我 重返故里 只是为了寻找 一枚小小的 白色棋子 它曾拈于 你的玉指之间 终有一天 悄然滑落 我们走在时间的荒崖里...

  • 棋子

    我们生来就都是命运的棋子 当有人意识到这一点 想做出改变 不服命运的安排 便会有无数安于现状 用四肢生活的棋子 百...

  • 棋子

    黑色白色, 一样的子儿。 走对了—— 个个精兵强将; 走错了—— 粒粒手下败将。

  • 棋子

    文/木头姐 万里做客的天堂 点缀着浪花般的云层 朴实无华的街头 穿梭着小城的阶层人物 这所充斥着华丽和喧闹的小城 ...

  • 棋子

    无论你多么冰雪聪明 也不管你多么能掐会算 你自始自终都是别人的棋子 除非你不入红尘 除非你超神越仙 除非你深陷空门...

  • 棋子

    棋盘上的每一步 或退或进 都是安排的命运 是输是赢 都是既定的宿命 棋盘上铿锵有力的 回旋 不是有力的选择 是为了...

网友评论

      本文标题:棋子翻转

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