[创新杯] 七个黑白棋子 跳棋问题 ,怀念实验室里和老师摆弄棋子的校园生活.


public class T42 {

    //用一位数组存储棋盘状态,棋盘左边界LEFT,右边界RIGHT,棋盘中间 位置MID
    //棋盘中各有黑子和白字 COUNT个
    static final int LEFT=0,RIGHT=6,MID=(LEFT+RIGHT)/2;
    static final int COUNT=3;
    static int[] s={1,1,1,2,0,0,0};
    static String[] name={"白","黑","   "};
   
    //输出棋盘状态
    public static void out(int[] s)
    {
        for(int i=0;i<s.length ;i++)
            System.out.print(name[s[i]]);
        System.out.println();
    }
   
   
    public static void main(String[] args)
    {
        int temp;       
      out(s);
      for(int i=MID-1;i>=0;i--)
      {
          int position=i;
          //i位置黑子移动到所有白子右边
          for(int j=0;j<COUNT;j++)
          {
             
              //position位置黑子与position+1位置空格换位
              temp=s[position];s[position]=s[position+1];s[position+1]=temp;
              out(s);
              //position位置空格与position+2位置白字换位
              temp=s[position];s[position]=s[position+2];s[position+2]=temp;
              out(s);
              position++;             
          }
        //i位置黑子移动到其目标位置
         temp=s[position];s[position]=s[position+1];s[position+1]=temp;
          out(s);
          //如果是最后一个黑子,白子不需要回退
          if(i==0) break;
         //count个白子退回到右端
          for(int j=0;j<COUNT;j++)
          {
              temp=s[position];s[position]=s[position-1];s[position-1]=temp;
              out(s);
              position--;
          }
       }
     
     }
   
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值