2016蓝桥杯C/C++A组填数字
2016-04-01 12:25
295 查看
方格填数
如下的10个格子
+--+--+--+
| | | |
+--+--+--+--+
| | | | |
+--+--+--+--+
| | | |
+--+--+--+
(如果显示有问题,也可以参看【图1.jpg】)
填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)
一共有多少种可能的填数方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
此题是一道典型的深搜题目,因为是填空题,不需要考虑效率,若用C++的库函数(next_permutation)直接写也是很方便的,用了此库函数可直接进行数次if判断就可得出结果。
首先,将原图进行拆分整合,得下图
Download
as text
如下的10个格子
+--+--+--+
| | | |
+--+--+--+--+
| | | | |
+--+--+--+--+
| | | |
+--+--+--+
(如果显示有问题,也可以参看【图1.jpg】)
填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)
一共有多少种可能的填数方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
此题是一道典型的深搜题目,因为是填空题,不需要考虑效率,若用C++的库函数(next_permutation)直接写也是很方便的,用了此库函数可直接进行数次if判断就可得出结果。
首先,将原图进行拆分整合,得下图
Download
as text
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #include<iostream> #include<algorithm> //算法头文件,包含许多十分方便的库函数(next_permutation()就在其中) #include<cmath> //数学头文件fabs()是绝对值的库函数 using namespace std; int main() { int a[20],sum=0; for(int i=0;i<10;i++) a[i]=i; //进行题目所需的判断 do{ if(fabs((double)(a[0]-a[1]))!=1&&fabs((double)(a[0]-a[3]))!=1&&fabs((double)(a[0]-a[4]))!=1&&fabs((double)(a[0]-a[2]))!=1) { if(fabs((double)(a[1]-a[4]))!=1&&fabs((double)(a[3]-a[1]))!=1) { if(fabs((double)(a[2]-a[3]))!=1&&fabs((double)(a[2]-a[5]))!=1&&fabs((double)(a[2]-a[6]))!=1) { if(fabs((double)(a[3]-a[4]))!=1&&fabs((double)(a[3]-a[6]))!=1&&fabs((double)(a[3]-a[7]))!=1&&fabs((double)(a[3]-a[5]))!=1) { if(fabs((double)(a[4]-a[6]))!=1&&fabs((double)(a[4]-a[7]))!=1) { if(fabs((double)(a[5]-a[6]))!=1&&fabs((double)(a[5]-a[8]))!=1&&fabs((double)(a[5]-a[9]))!=1) { if(fabs((double)(a[6]-a[7]))!=1&&fabs((double)(a[6]-a[9]))!=1&&fabs((double)(a[6]-a[8]))!=1) { if(fabs((double)(a[7]-a[9]))!=1) { if(fabs((double)(a[8]-a[9]))!=1) sum++; } } } } } } } } }while(next_permutation(a,a+10));//全排列的函数,两个参数为所需排列的数组首地址和末地址 cout<<sum; return 0; } |
相关文章推荐
- VC++中,如何定义callback函数和它的触发事件?
- 利用享元模式模拟网站对象建立 C++
- C++ 使用开源库里.h文件和.lib文件的步骤
- 使用C语言解析URL
- C/C++中的移位运算
- c语言字符数组与字符串的使用详解
- 第1周 《C语言及程序设计》资料3——C语言中转义字符
- C++ 访问属性
- 51单片机 C语言中全局变量的使用extern
- 深入理解C++的动态绑定和静态绑定
- 第1周 《C语言及程序设计》实践项目1——指针及其运算
- 一个关于友元和继承的问题
- 第1周 《C语言及程序设计》资料2——C语言中数学函数
- 第1周 《C语言及程序设计》资料1——C语言中的运算符
- codeblocks c++ 编译出错
- codeblocks c++ 编译出错
- C++标准库容器与迭代器
- C/C++二叉树搜索树操作集
- 用C语言进行CGI程序设计
- error C2660: “MessageBoxA” : 函数不接受 1 个参数