zoukankan      html  css  js  c++  java
  • 洛谷P1259 黑白棋子的移动

    题目描述

    有2n个棋子(n≥4)排成一行,开始为位置白子全部在左边,黑子全部在右边,如下图为n=5的情况:

    ○○○○○●●●●●

    移动棋子的规则是:每次必须同时移动相邻的两个棋子,颜色不限,可以左移也可以右移到空位上去,但不能调换两个棋子的左右位置。每次移动必须跳过若干个棋子(不能平移),要求最后能移成黑白相间的一行棋子。如n=5时,成为:

    ○●○●○●○●○●

    任务:编程打印出移动过程。

    输入格式

    一个整数n(n<=100)

    输出格式

    若干行,表示初始状态和每次移动的状态,用"o"表示白子,"*"表示黑子,"-"表示空行。

    输入输出样例

    输入 #1
    7
    输出 #1
    ooooooo*******--
    oooooo--******o*
    oooooo******--o*
    ooooo--*****o*o*
    ooooo*****--o*o*
    oooo--****o*o*o*
    oooo****--o*o*o*
    ooo--***o*o*o*o*
    ooo*o**--*o*o*o*
    o--*o**oo*o*o*o*
    o*o*o*--o*o*o*o*
    --o*o*o*o*o*o*o*

    思路:


    代码:
    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    #include<string>
    #define N 1001
    using namespace std;
    int n,st,sp;
    char a[N];
    void print()
    {
        for(int i=1;i<=2*n+2;i++)
            printf("%c",a[i]);
        printf("
    ");
    }
    void move(int m)//挪棋子
    {
        a[sp]=a[m];//空格填上对应位置的棋子
        a[sp+1]=a[m+1];
        a[m]=a[m+1]='-';
        sp=m;
        print();
    }
    void mv(int m)
    {
        if(m==4)//第四种情况的时候要分类讨论
        {
            move(4);
            move(8);
            move(2);
            move(7);
            move(1);
        }
        else//如果还没到第四种情况
        {
            move(m);//move函数里面的数其实是当前要挪动靠前棋子的位置,手续挪动m和m+1两个棋子,一开始要将它们挪到最后,所以sp要初始化为2*n+1,这是第一个空格的位置
            move(2*m-1);
            mv(m-1);
        }
    }
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++)
            a[i]='o';
        for(int i=n+1;i<=2*n;i++)
            a[i]='*';
        for(int i=2*n+1;i<=2*n+2;i++)
            a[i]='-';
        st=0;
        sp=2*n+1;
        print();
        mv(n);
        return 0;
    }
  • 相关阅读:
    python安装cnstd卡住
    _、__、__xx__之间的差别
    Celery模块使用
    同一主机,开启多个不同端口的redis进程
    php配置变更记录
    Linux安装Nodejs
    ElasticSearch中term和match探索
    Centos安装elasticsearch,php连接使用
    centos8自定义目录安装php7.3
    centos8自定义目录安装nginx
  • 原文地址:https://www.cnblogs.com/57xmz/p/12975098.html
Copyright © 2011-2022 走看看