第七届蓝桥杯—第六题||方格填数

如图,如下的10个格子,填入0~9的数字。要求:连续的两个数字不能相邻。

(左右、上下、对角都算相邻)一共有多少种可能的填数方案?

请填写表示方案数目的整数。

思路:直接 暴力求解,依次向每个格子填数与已经填入的进行比较是否连续,即:是否两者之差的绝对值为1。

答案:  1580 (我考虑每个数字都不相同)

#include<iostream>
#include<cmath>
using namespace std;
int main(void){
	int count=0;
	for(int a=0;a<=9;a++){
		for(int b=0;b<=9;b++){
			if(abs(b-a)==1||b==a)
			    continue;
			for(int c=0;c<=9;c++){
				if(abs(c-b)==1||b==c||c==a)
				   continue;
				for(int d=0;d<=9;d++){
					if(abs(d-a)==1||d==a||d==b||d==c)
					  continue;
					for(int e=0;e<=9;e++){
						if(abs(e-a)==1||abs(e-b)==1||abs(e-d)==1||e==a||e==b||e==c||e==d)
						   continue;
						for(int f=0;f<=9;f++){
						     if(abs(f-e)==1||abs(f-a)==1||abs(f-b)==1||abs(f-c)==1||f==a||f==b||f==c||f==d||f==e)
						        continue;
						    for(int g=0;g<=9;g++){
						        	if(abs(g-f)==1||abs(g-b)==1||abs(g-c)==1||g==a||g==b||g==c||g==d||g==e||g==f)
						        	  continue;
						        	for(int h=0;h<=9;h++){
						        		if(abs(h-d)==1||abs(h-e)==1||h==a||h==b||h==e||h==f||h==g||h==c||h==d)
						        		  continue;
						        		  for(int i=0;i<=9;i++){
						        		  	if(abs(i-d)==1||abs(i-e)==1||abs(i-f)==1||abs(i-h)==1||i==a||i==b||i==c||i==d||i==e||i==f||i==g||i==h)
						        		  	  continue;
						        		  	  for(int j=0;j<=9;j++){
						        		  	  	if(abs(j-i)==1||abs(j-e)==1||abs(j-f)==1||abs(j-g)==1||j==a||j==b||j==c||j==d||j==e||j==f||j==g||j==h||j==i)
						        		  	  	  continue;
						        		  	  	  count++;
												}
										  }
									}
							}
						}
					}
				}
			}
		}
	}
	cout<<count<<endl;
}
时间: 2024-10-07 20:28:41

第七届蓝桥杯—第六题||方格填数的相关文章

16年第七届蓝桥杯第三题_

方格填数 如下的10个格子    +--+--+--+    |    |    |   |+--+--+--+--+|    |   |    |   |+--+--+--+--+|    |   |    |+--+--+--+ (如果显示有问题,也可以参看[图1.jpg]) 填入0~9的数字.要求:连续的两个数字不能相邻.(左右.上下.对角都算相邻) 一共有多少种可能的填数方案? 请填写表示方案数目的整数.注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字. 第二次做,想到的

第七届蓝桥杯——第五题||抽签

抽签 X星球要派出一个5人组成的观察团前往W星. 其中: A国最多可以派出4人. B国最多可以派出2人. C国最多可以派出2人. .... 那么最终派往W星的观察团会有多少种国别的不同组合呢? 下面的程序解决了这个问题. 数组a[] 中既是每个国家可以派出的最多的名额. 程序执行结果为: DEFFF CEFFF CDFFF CDEFF CCFFF CCEFF CCDFF CCDEF BEFFF BDFFF BDEFF BCFFF BCEFF BCDFF BCDEF .... #include <

2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告

2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告 勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580. 条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊.!感谢zzh童鞋的提醒. 勘误2:第7题在推断连通的时候条件写错了,后两个if条件中是应该是<=12 落了一个等于号.正确答案应为116. 1.煤球数目 有一堆煤球.堆成三角棱锥形.详细: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形). -. 假设一共

第七届蓝桥杯C语言C组-(自己懂的题目)

第七届蓝桥杯C语言C组-(自己懂的题目) 表示刚刚查了成绩,省赛一等奖,有资格去北京了,然后写一下总结, 先来写一下我懂的题目,毕竟我也是菜鸟,听说国赛比预赛难几个等级... 第一题 报纸页数 X星球日报和我们地球的城市早报是一样的, 都是一些单独的纸张叠在一起而已.每张纸印有4版. 比如,某张报纸包含的4页是:5,6,11,12, 可以确定它应该是最上边的第2张报纸. 我们在太空中捡到了一张X星球的报纸,4个页码分别是: 1125,1126,1727,1728 请你计算这份报纸一共多少页(也就

第七届蓝桥杯省赛7:剪邮票

第七届蓝桥杯省赛7:剪邮票 如[图1.jpg], 有12张连在一起的12生肖的邮票. 现在你要从中剪下5张来,要求必须是连着的. (仅仅连接一个角不算相连) 比如,[图2.jpg],[图3.jpg]中,粉红色所示部分就是合格的剪取. 请你计算,一共有多少种不同的剪取方法. 请填写表示方案数目的整数. 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字. 解决思路:先将所有五个一组的情况遍历,然后用广度优先判断是否连通. 我在选五个一组的时候是用的 for 先选出第几个邮票,然后将其

算法笔记_212:第七届蓝桥杯软件类决赛真题(Java语言B组)

目录 1 愤怒小鸟 2 反幻方 3 打靶 4 路径之谜 5 碱基 6 圆圈舞 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 愤怒小鸟 愤怒小鸟 X星球愤怒的小鸟喜欢撞火车! 一根平直的铁轨上两火车间相距 1000 米 两火车 (不妨称A和B) 以时速 10米/秒 相对行驶. 愤怒的小鸟从A车出发,时速50米/秒,撞向B车, 然后返回去撞A车,再返回去撞B车,如此往复.... 两火车在相距1米处停车. 问:这期间愤怒的小鸟撞 B 车多少次? 注意:需要提交的是一个整数(表示撞B车的次数),不要

第七届蓝桥杯省赛C/C++B组赛题及答案

第一题 [题目] 煤球数目 有一堆煤球,堆成三角棱锥形.具体:第一层放1个,第二层3个(排列成三角形),第三层6个(排列成三角形),第四层10个(排列成三角形),....如果一共有100层,共有多少个煤球? 请填表示煤球总数目的数字.注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字. [提示] 找出每一层煤球个数的规律,循环累加计算 [答案] 1 #include<stdio.h> 2 int main() 3 { 4 int i,s=1,num=1; 5 for(i=2;i&

第七届蓝桥杯本科B组省赛

煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), -. 如果一共有100层,共有多少个煤球? 请填表示煤球总数目的数字. 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字. 思路: 推出第i层有i*(i+1)/2个煤球,累加到100层即可,答案为171700 #include <bits/stdc++.h> using namespace std; int main() {

第七届蓝桥杯C/C++B组省赛题目解析

题目1:煤球数目 有一堆煤球,堆成三角棱锥形.具体:第一层放1个,第二层3个(排列成三角形),第三层6个(排列成三角形),第四层10个(排列成三角形),....如果一共有100层,共有多少个煤球?请填表示煤球总数目的数字.注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字. 解析: 第一层:1个. 第二层:2*3-3=3个. 第三层:3*3-3=6个. 第四层:4*3-3=10个. 代码如下: int s=0,a=0; for(int i=1;i<=100;i++){ a=a+i;