蓝桥杯-【方格填数】【2016年省赛B组题解】【C++】——暴力破解
2018-03-15 16:01
561 查看
2016年第七届蓝桥杯题目汇总
http://blog.csdn.net/qq_34202873/article/details/79646517
第六题:
方格填数
如图,如下的10个格子,填入0~9的数字。要求:连续的两个数字不能相邻。(左右、上下、对角都算相邻)一共有多少种可能的填数方案?
请填写表示方案数目的整数。
解题思路:
还是利用c++的全排列函数,然后写个judge函数来判断一下相邻的数字是不是连续的就可以了,条件写的时候比较麻烦罢了。答案是:1580
#include <cstdio> #include <algorithm> #include <cmath> int a[11]= {11111,0,1,2,3,4,5,6,7,8,9}; int judge() { if(abs(a[1]-a[2])==1||abs(a[1]-a[4])==1||abs(a[1]-a[5])==1||abs(a[1]-a[6])==1) return 0; else if(abs(a[2]-a[5])==1||abs(a[2]-a[6])==1||abs(a[2]-a[7])==1||abs(a[2]-a[3])==1) return 0; else if(abs(a[3]-a[6])==1||abs(a[3]-a[7])==1) return 0; else if(abs(a[4]-a[5])==1||abs(a[4]-a[8])==1||abs(a[4]-a[9])==1) return 0; else if(abs(a[5]-a[6])==1||abs(a[5]-a[8])==1||abs(a[5]-a[9])==1||abs(a[5]-a[10])==1) return 0; else if(abs(a[6]-a[7])==1||abs(a[6]-a[9])==1||abs(a[6]-a[10])==1) return 0; else if(abs(a[7]-a[10])==1) return 0; else if(abs(a[8]-a[9])==1) return 0; else if(abs(a[9]-a[10])==1) return 0; return 1; } int main() { int sum=0; do{ if(judge()) sum++; }while(next_permutation(a+1,a+11)); cout<<sum; return 0; }
相关文章推荐
- 蓝桥杯-【煤球数目】【2016年省赛B组题解】【C++】
- 蓝桥杯-【剪邮票】【2016年省赛B组题解】【C++】
- 蓝桥杯-【生日蜡烛】【2016年省赛B组题解】【C++】
- 蓝桥杯-【凑算式】【2016年省赛B组题解】【C++】——深搜及全排列双解法
- 蓝桥杯-【抽签】【2016年省赛B组题解】【C++】——快速解法
- 蓝桥杯-【四平方定理】【2016年省赛B组题解】【C++】
- 蓝桥杯-【交换瓶子】【2016年省赛B组题解】【C++】
- 蓝桥杯2016年第七届省赛C_C++程序设计本科B组
- 2016蓝桥杯C/C++省赛 剪邮票(深搜DFS+暴力)
- 2016年第七届蓝桥杯c/c++省赛B组
- 蓝桥杯_2016年第七届C/C++B组—6.方格填数 【DFS】
- 煤球数目(2016年第七届蓝桥杯c/c++省赛B组(1题))
- 蓝桥杯省赛A组 C/C++ 部分题解说明(填坑待补)
- 第八届 蓝桥杯 c/c++ B组 省赛 (4)——方格分割
- 2018第九届蓝桥杯C++省赛B组[最新题解汇总]
- 蓝桥杯-【2016年省赛B组题解省赛总目录】【C++】
- 2016年第七届蓝桥杯c/c++省赛B组
- 第七届 蓝桥杯 c/c++ B组 省赛 (6)——方格填数
- 【暴力循环】(2016)第七届蓝桥杯省赛 C/C++ A组 题解(第八题)
- 蓝桥杯-【K倍区间】【2017年省赛B组题解】-动态规划解法-【C++】