java蓝桥杯垒骰子

/**
 * 垒骰子
 * @author dyp
 *「输入格式」
 *第一行两个整数 n m
 *n表示骰子数目
 *接下来 m 行,每行两个整数 a b ,表示 a 和 b 数字不能紧贴在一起。
 *由于方案数可能过多,请输出模 10^9 + 7 的结果。
 *
 */
//该类仅用于测试思路是否正确,许多地方都简写了
public class test10a {
	static int n=2;//表示骰子的数量
	static int[][] m= {//表示不能连接的方案,可以改成接收用户输入的,这里只举了一个不能的组合(1和2)
			{1,2}
	};
			
	public static void main(String[] args) {
		int num=2*m.length;//统计不可以的组合因为(1和2)也可以是(2和1)所有乘以2
		for(int i=0;i<m.length;i++) {
			if(m[i][0]==m[i][1]) {//对于两个数相同的组合只需要统计一次,如(3和3)交换后也是(3和3)
				num--;
			}
		}
		int a=(int)Math.pow(6, n);//总的连接方式,只统计了连接面
		int b=n==1?0:(int)Math.pow(num,n-1);//不符合要求的连接方式
		int c=(int)Math.pow(4, n);//每颗骰子的上面固定时可以旋转4次,
		int sum=(a-b)*c;
		System.out.println(sum);
		
		
	}

}

上一篇:Java运算符基本使用


下一篇:新手C语言实现判定三角形及其面积运算