第七届蓝桥杯C++B组 方格填数
2018-03-22 13:16
274 查看
方格填数如下的10个格子填入0~9的数字。 (如果显示有问题,也可以参看【图1.jpg】)
+--+--+--+
| | | |
+--+--+--+--+
| | | | |
+--+--+--+--+
| | | |
+--+--+--+
要求:连续的两个数字不能相邻。(左右、上下、对角都算相邻)一共有多少种可能的填数方案?请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
思路:看到0~9数字我就想到了全排列hhhhh虽然我知道这样判断条件会有毒了一点……答案:1580#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<queue>
#include<map>
#include<set>
using namespace std;
int main()
{
int num[10]={0,1,2,3,4,5,6,7,8,9};
int ans=0;
do
{
if(abs(num[0]-num[1])==1 || abs(num[0]-num[3])==1 || abs(num[0]-num[4])==1 || abs(num[0]-num[5])==1 || abs(num[1]-num[2])==1 || abs(num[1]-num[4])==1 || abs(num[1]-num[5])==1 || abs(num[1]-num[6])==1 || abs(num[2]-num[5])==1 || abs(num[2]-num[6])==1 || abs(num[3]-num[4])==1 || abs(num[3]-num[7])==1 || abs(num[3]-num[8])==1 || abs(num[4]-num[5])==1 || abs(num[4]-num[7])==1 || abs(num[4]-num[8])==1 || abs(num[4]-num[9])==1 || abs(num[5]-num[6])==1 || abs(num[5]-num[8])==1 || abs(num[5]-num[9])==1 || abs(num[6]-num[9])==1 || abs(num[7]-num[8])==1 || abs(num[8]-num[9])==1)
continue;
else
ans++;
}while(next_permutation(num,num+10));
cout<<ans<<endl;
return 0;
}PS:也可以用dfs解决,传送地址:http://blog.csdn.net/y1196645376/article/details/50938608
+--+--+--+
| | | |
+--+--+--+--+
| | | | |
+--+--+--+--+
| | | |
+--+--+--+
要求:连续的两个数字不能相邻。(左右、上下、对角都算相邻)一共有多少种可能的填数方案?请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
思路:看到0~9数字我就想到了全排列hhhhh虽然我知道这样判断条件会有毒了一点……答案:1580#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<queue>
#include<map>
#include<set>
using namespace std;
int main()
{
int num[10]={0,1,2,3,4,5,6,7,8,9};
int ans=0;
do
{
if(abs(num[0]-num[1])==1 || abs(num[0]-num[3])==1 || abs(num[0]-num[4])==1 || abs(num[0]-num[5])==1 || abs(num[1]-num[2])==1 || abs(num[1]-num[4])==1 || abs(num[1]-num[5])==1 || abs(num[1]-num[6])==1 || abs(num[2]-num[5])==1 || abs(num[2]-num[6])==1 || abs(num[3]-num[4])==1 || abs(num[3]-num[7])==1 || abs(num[3]-num[8])==1 || abs(num[4]-num[5])==1 || abs(num[4]-num[7])==1 || abs(num[4]-num[8])==1 || abs(num[4]-num[9])==1 || abs(num[5]-num[6])==1 || abs(num[5]-num[8])==1 || abs(num[5]-num[9])==1 || abs(num[6]-num[9])==1 || abs(num[7]-num[8])==1 || abs(num[8]-num[9])==1)
continue;
else
ans++;
}while(next_permutation(num,num+10));
cout<<ans<<endl;
return 0;
}PS:也可以用dfs解决,传送地址:http://blog.csdn.net/y1196645376/article/details/50938608
相关文章推荐
- 方格填数-第七届蓝桥杯c/c++B组
- 2016第七届蓝桥杯C++B组第六题:方格填数
- 第七届 蓝桥杯 c/c++ B组 省赛 (6)——方格填数
- 2016年第七届蓝桥杯C/C++A组第三题---方格填数
- 第七届蓝桥杯C\C++B组省赛题目——方格填数
- 蓝桥杯_2016年第七届C/C++B组—6.方格填数 【DFS】
- 2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告
- 2016年第七届蓝桥杯省赛(C/C++ A组)
- 第七届蓝桥杯大赛个人赛省赛C++ B组 (第九题 交换瓶子)
- 2016第七届蓝桥杯C/C++ B组省赛第三题:凑算式
- 第七届 蓝桥杯 c/c++ B组 省赛 (1)——煤球数目
- 第七届蓝桥杯C/C++省赛B组真题解析与答案
- 蓝桥杯-第七届省赛javaB组-方格填数
- 2016第七届蓝桥杯C/C++ B组省赛题解 D题
- 蓝桥杯_2016年第七届C/C++B组—1.煤球填数
- 第七届 蓝桥杯 省赛 第六题 方格填数(next_permutation)
- 2016年第七届蓝桥杯Java 方格填数
- 2016第七届蓝桥杯C++B组第四题:快速排序
- 第七届蓝桥杯省赛c++ A组 方格填数
- 【暴力循环】(2016)第七届蓝桥杯省赛 C/C++ A组 题解(第八题)