蓝桥杯第七届javaB组第六题

蓝桥杯第七届javaB组第六题

题目要求

方格填数
如下的10个格子
在这里插入图片描述
填入0~9的数字。要求:连续的两个数字不能相邻。(左右、上下、对角都算相邻)
一共有多少种可能的填数方案?
答案 1580
——————————————————————————————————————————————————————————————————————————————————

我自己的做法

这个题我想的很简单,反正没有内存要求,所以直接采取了暴力求解的办法。
先用十个for循环依次对应十个方格,然后根据每一个方格所在位置进行判断是否符合题目要求。。。。。
话不多说,直接上代码

代码
<textarea readonly="readonly" name="code" class="java">
public class 方格填数 {
 public static void main(String args[]) {
  int[] nums= new int[11];
  int temp=0;
  for(int i=0;i<=9;i++) {
   nums[0]=i;
   for(int j=0;j<=9;j++) {
    nums[1]=j;
    if(Math.abs(nums[0]-nums[1])==1||nums[0]==nums[1]) continue;
    for(int k=0;k<=9;k++) {
     nums[2]=k;
     if(Math.abs(nums[2]-nums[1])==1||nums[2]==nums[1]||nums[0]==nums[2]) continue;
     for(int l=0;l<=9;l++) {
      nums[3]=l;
      if(Math.abs(nums[0]-nums[3])==1||nums[3]==nums[1]||nums[0]==nums[3]||nums[3]==nums[2]) continue;
      for(int m=0;m<=9;m++) {
       nums[4]=m;
       if(Math.abs(nums[0]-nums[4])==1||Math.abs(nums[3]-nums[4])==1||Math.abs(nums[1]-nums[4])==1||nums[3]==nums[4]||nums[0]==nums[4]||nums[4]==nums[2]||nums[4]==nums[1]) continue;
       for(int n=0;n<=9;n++) {
        nums[5]=n;
        if(Math.abs(nums[5]-nums[4])==1||Math.abs(nums[0]-nums[5])==1||Math.abs(nums[1]-nums[5])==1||Math.abs(nums[2]-nums[5])==1||nums[5]==nums[4]||nums[0]==nums[5]||nums[5]==nums[2]||nums[5]==nums[1]||nums[5]==nums[3]) continue;
        for(int o=0;o<=9;o++) {
         nums[6]=o;
         if(Math.abs(nums[5]-nums[6])==1||Math.abs(nums[1]-nums[6])==1||Math.abs(nums[2]-nums[6])==1||nums[6]==nums[4]||nums[0]==nums[6]||nums[6]==nums[2]||nums[6]==nums[1]||nums[6]==nums[3]||nums[6]==nums[5]) continue;
         for(int p=0;p<=9;p++) {
          nums[7]=p;
          if(Math.abs(nums[7]-nums[3])==1||Math.abs(nums[7]-nums[4])==1||nums[7]==nums[4]||nums[0]==nums[7]||nums[7]==nums[2]||nums[7]==nums[1]||nums[7]==nums[3]||nums[7]==nums[5]||nums[7]==nums[6]) continue;
          for(int q=0;q<=9;q++) {
           nums[8]=q;
           if(nums[8]==nums[7]||nums[8]==nums[4]||nums[0]==nums[8]||nums[8]==nums[2]||nums[8]==nums[1]||nums[8]==nums[3]||nums[8]==nums[5]||nums[8]==nums[6]||Math.abs(nums[7]-nums[8])==1||Math.abs(nums[3]-nums[8])==1||Math.abs(nums[4]-nums[8])==1||Math.abs(nums[5]-nums[8])==1) continue;
           for(int r=0;r<=9;r++) {
            nums[9]=r;
            if(Math.abs(nums[9]-nums[8])==1||Math.abs(nums[9]-nums[4])==1||Math.abs(nums[9]-nums[5])==1||Math.abs(nums[9]-nums[6])==1) continue;
            for(int r1=0;r1<=8;r1++) {
             if(nums[9]==nums[r1]) {
              temp--;
              break;
             }
            }
            temp++;
           }
          }
         }
        }
       }
      }
     }
    }
   }
  }
  System.out.println(temp);
 }
 
}



</texearea>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值