蓝桥杯JAVA语言B组_方格填数

来源:互联网 发布:浙江财经大学数据库 编辑:程序博客网 时间:2024/05/27 09:44

题目:方格填数


如下的10个格子
   +--+--+--+
    |    |    |    |
+--+--+--+--+
 |    |   |     |    |
+--+--+--+--+
|    |    |     |
+--+--+--+
填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)

一共有多少种可能的填数方案?

答案:1580
解析:可能暴力解题习惯了,没有认真思考其他方法,当然是有一些简单方法的,大家也可以看看其他的。

public class S_Six {public static void main(String[] args) {// TODO Auto-generated method stubint z=0;for(int a=0;a<10;a++)for(int b=0;b<10;b++)if(b!=a)for(int c=0;c<10;c++)if(c!=a && c!=b)for(int d=0;d<10;d++)if(d!=a && d!=b && d!=c)for(int e=0;e<10;e++)if(e!=a && e!=b && e!=c && e!=d)for(int f=0;f<10;f++)if(f!=a && f!=b && f!=c && f!=d && f!=e)for(int g=0;g<10;g++)if(g!=a && g!=b && g!=c && g!=d && g!=e && g!=f)for(int h=0;h<10;h++)if(h!=a && h!=b && h!=c && h!=d && h!=e  && h!=f && h!= g)for(int i=0;i<10;i++)if(i!=a && i!=b && i!=c && i!=d && i!=e  && i!=f && i!=g && i!=h)for(int j=0;j<10;j++)if(j!=a && j!=b && j!=c && j!=d && j!=e  && j!=f && j!=g && j!=h && j!=i){if(Math.abs(a-b)>1 && Math.abs(a-d)>1 && Math.abs(a-e)>1 && Math.abs(a-f)>1)if(Math.abs(b-c)>1 && Math.abs(b-e)>1 && Math.abs(b-f)>1 && Math.abs(b-g)>1)if(Math.abs(c-f)>1 && Math.abs(c-g)>1)if(Math.abs(d-e)>1 && Math.abs(d-h)>1 && Math.abs(d-i)>1)if(Math.abs(e-f)>1 && Math.abs(e-h)>1 && Math.abs(e-i)>1 && Math.abs(e-j)>1)if(Math.abs(f-g)>1 && Math.abs(f-i)>1 && Math.abs(f-j)>1)if(Math.abs(g-j)>1)if(Math.abs(h-i)>1)if(Math.abs(i-j)>1){z++;}}System.out.println(z);}}



原谅我的暴力解法




0 0
原创粉丝点击