文章目录

  • 题目描述
  • 输入格式
  • 输出格式
    • 样例输入 #1
    • 样例输出 #1
  • 提示
    • 数据规模
  • Code
  • 洛古原题
  • ~ 搜索+剪枝 ~

题目描述

填数字方格的游戏有很多种变化,如下图所示的 4 × 4 4 \times 4 4×4 方格中,我们要选择从数字 1 1 1 到 16 16 16 来填满这十六个格子( A i , j A_{i,j} Ai,j​ ,其中 i = 1 ⋯ 4 i=1 \cdots 4 i=1⋯4 , j = 1 ⋯ 4 j=1 \cdots 4 j=1⋯4)。为了让游戏更有挑战性,我们要求下列六项中的每一项所指定的四个格子,其数字累加的和必须为 34 34 34 :

A 1 , 1 A_{1,1} A1,1​ A 1 , 2 A_{1,2} A1,2​ A 1 , 2 A_{1,2} A1,2​ A 1 , 4 A_{1,4} A1,4​
A 2 , 1 A_{2,1} A2,1​ A 2 , 2 A_{2,2} A2,2​ A 2 , 3 A_{2,3} A2,3​ A 2 , 4 A_{2,4} A2,4​
A 3 , 1 A_{3,1} A3,1​ A 3 , 2 A_{3,2} A3,2​ A 3 , 3 A_{3,3} A3,3​ A 3 , 4 A_{3,4} A3,4​
A 4 , 1 A_{4,1} A4,1​ A 4 , 2 A_{4,2} A4,2​ A 4 , 3 A_{4,3} A4,3​ A 4 , 4 A_{4,4} A4,4​

- 四个角落上的数字,即 A 1 , 1 + A 1 , 4 + A 4 , 1 + A 4 , 4 = 34 A_{1,1}+A_{1,4}+A_{4,1}+A_{4,4}=34 A1,1​+A1,4​+A4,1​+A4,4​=34 。
- 每个角落上的 2 × 2 2 \times 2 2×2 方格中的数字,例如左上角 A 1 , 1 + A 1 , 2 + A 2 , 1 + A 2 , 2 = 34 A_{1,1}+A_{1,2}+A_{2,1}+A_{2,2}=34 A1,1​+A1,2​+A2,1​+A2,2​=34 。
- 最中间的 2 × 2 2 \times 2 2×2 方格中的数字,即 A 2 , 2 + A 2 , 3 + A 3 , 2 + A 3 , 3 = 34 A_{2,2}+A_{2,3}+A_{3,2}+A_{3,3}=34 A2,2​+A2,3​+A3,2​+A3,3​=34 。
- 每条水平线上四个格子中的数字,即 A i , 1 + A i , 2 + A i , 3 + A i , 4 = 34 A_{i,1}+A_{i,2}+A_{i,3}+A_{i,4}=34 Ai,1​+Ai,2​+Ai,3​+Ai,4​=34,其中 i = 1 ⋯ 4 i=1 \cdots 4 i=1⋯4 。
- 每条垂直线上四个格子中的数字,即 A 1 , j + A 2 , j + A 3 , j + A 4 , j = 34 A_{1,j}+A_{2,j}+A_{3,j}+A_{4,j}=34 A1,j​+A2,j​+A3,j​+A4,j​=34,其中 j = 1 ⋯ 4 j=1 \cdots 4 j=1⋯4 。
- 两条对角线上四个格子中的数字,例如左上角到右下角 A 1 , 1 + A 2 , 2 + A 3 , 3 + A 4 , 4 = 34 A_{1,1}+A_{2,2}+A_{3,3}+A_{4,4}=34 A1,1​+A2,2​+A3,3​+A4,4​=34 。
- 右上角到左下角: A 1 , 4 + A 2 , 3 + A 3 , 2 + A 4 , 1 = 34 A_{1,4}+A_{2,3}+A_{3,2}+A_{4,1}=34 A1,4​+A2,3​+A3,2​+A4,1​=34 。

注意:特别的,我们会指定把数字 1 1 1 先固定在某一格内。

输入格式

输入只有一行包含两个正数据 i i i 和 j j j ,表示第 i i i 行和第 j j j 列的格子放数字 1 1 1。剩下的十五个格子,请按照前述六项条件用数字 2 2 2 到 16 16 16 来填满。

输出格式

输出四行,每行四个数,相邻两数之间用一个空格隔开,并且依序排好。排序的方式,是先从第一行的数字开始比较,每一行数字,由最左边的数字开始比,数字较小的解答必须先输出到文件中。

样例输入 #1

1 1

样例输出 #1

1 4 13 16
14 15 2 3
8 5 12 9
11 10 7 61 4 13 16
14 15 2 3
12 9 8 5
7 6 11 10

提示

数据规模

对于全部的测试点,保证 1 ≤ i , j ≤ 4 1 \leq i, j \leq 4 1≤i,j≤4。

Code

#include<bits/stdc++.h>
using namespace std;
int n,m,a[11][11],f[101],g[11],d=0;
void s(int x,int y) {if(x==4&&y>4) { //目标解输出for(int i=1; i<=4; i++) {for(int j=1; j<=4; j++) if(j==4) cout<<a[i][j]<<endl;else cout<<a[i][j]<<" ";}cout<<endl;}if(y>4) { //下一行int z=0;for(int i=1; i<=4; i++) z+=a[x][i];if(z==34) s(x+1,1);//剪枝return;}if(x==n&&y==m) { //是1就跳过s(x,y+1);return;}for(int i=2; i<=16; i++) if(f[i]==0) { //未使用if(x==4) { //每条垂直线上四个格子中的数字是否等于34int z=i;for(int j=1; j<=3; j++) z+=a[j][y];if(z!=34) continue;}if(x==4&&y==4) { //每四个角落上的数字是否等于34int z=i+a[1][1]+a[4][1]+a[1][4];if(z!=34) continue;}if(x==4&&y==1) { //右上角到左下角的数字是否等于34int z=i+a[1][4]+a[2][3]+a[3][2];if(z!=34) continue;}if(x==4&&y==4) { //每左上角到右下角的数字是否等于34int z=i+a[1][1]+a[2][2]+a[3][3];if(z!=34) continue;}if(x==3&&y==3) { //最中间的2×2方格中的数字是否等于34int z=i+a[2][2]+a[2][3]+a[3][2];if(z!=34) continue;}if(x==2&&y==2) { //左上角的数字是否等于34int z=i+a[1][1]+a[1][2]+a[2][1];if(z!=34) continue;}if(x==2&&y==4) { //右上角的数字是否等于34int z=i+a[1][3]+a[1][4]+a[2][3];if(z!=34) continue;}if(x==4&&y==2) { //左下角的数字是否等于34int z=i+a[3][1]+a[3][2]+a[4][1];if(z!=34) continue;}if(x==4&&y==4) { //右下角的数字是否等于34int z=i+a[3][3]+a[3][4]+a[4][3];if(z!=34) continue;}f[i]=1;//标记a[x][y]=i;//标记s(x,y+1);f[i]=0;//清除标记}
}
int main() {cin>>n>>m;a[n][m]=1;//第n行和第m列的格子放数字1f[1]=1;//标记1为使用过s(1,1);//深搜return 0;
}

洛古原题

~ 搜索+剪枝 ~

此题学好DFS(深搜)和剪枝方面就能直接AC
太水了
注意!!!:剪枝这种算法的时间复杂度是
O(n2n) ^2so 我们要进行优化,不然就会超时
看起来用"最优性剪枝"不太行,那我们就用”可行性剪枝“来做。
剪枝时要注意点,不要WA了。

P1274 魔术数字游戏(DFS)相关推荐

  1. 蓝桥杯 ALGO-1005 数字游戏 DFS记忆化搜索+剪枝+杨辉三角 python

    题目 问题描述 给定一个1-N的排列a[i],每次将相邻两个数相加,得到新序列,再对新序列重复这样的操作,显然每次得到的序列都比上一次的序列长度少1,最终只剩一个数字. 例如: 3 1 2 4 4 3 ...

  2. 【LeetCode笔记 - 每日一题】375. 猜数字游戏 II (Java、DFS、动态规划)

    文章目录 题目描述 思路 && 代码 DFS 动态规划 新系列-用于区分开高频题和每日一题- 题目描述 一眼二分,但是实际上并不是 这题让我想到社团的猜数字游戏-但是给钱是真过分了= ...

  3. codevs 1085 数字游戏 dp或者暴搜

    1085 数字游戏 2003年NOIP全国联赛普及组  时间限制: 1 s  空间限制: 128000 KB 题目描述 Description 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁 ...

  4. java 蓝桥杯 数字游戏

    试题 算法训练 数字游戏 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个1-N的排列a[i],每次将相邻两个数相加,得到新序列,再对新序列重复这样的操作,显然每次得到的序列 ...

  5. 一本通1586【 例 2】数字游戏

    1586:[ 例 2]数字游戏 时间限制: 1000 ms         内存限制: 524288 KB 题目描述 科协里最近很流行数字游戏.某人命名了一种不降数,这种数字必须满足从左到右各位数字成 ...

  6. 印章、拿金币、数字游戏

    目录 印章: 原题链接: 思路: 代码: 拿金币: 原题链接: 思路: 代码: 数字游戏: 原题链接: 思路: 代码: 印章: 原题链接: "蓝桥杯"练习系统 思路: 明确dp[i ...

  7. 蓝桥杯 Python 练习题 数字游戏

    试题 算法训练 数字游戏 提交此题   评测记录 资源限制 时间限制:1.0s   内存限制:256.0MB 问题描述 给定一个1-N的排列a[i],每次将相邻两个数相加,得到新序列,再对新序列重复这 ...

  8. 小鱼的数字游戏递归解

    题目描述: 小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字ai(长度不一定,以0结束),记住了然后反着念出来(表示结束的数字就不要念出来).这对小鱼的那点记忆力实在是太难了,你也不想想小鱼的整 ...

  9. 蓝桥杯算法训练 数字游戏 组合数和暴力两种解法

    试题 算法训练 数字游戏 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个1-N的排列a[i],每次将相邻两个数相加,得到新序列,再对新序列重复这样的操作,显然每次得到的序列 ...

最新文章

  1. 论文笔记之:Generative Adversarial Text to Image Synthesis
  2. JavaMoney规范(JSR 354)与对应实现解读
  3. python学习之if条件句的使用
  4. Hadoop 02_初学必知
  5. 一个项目的整个测试流程
  6. 基本语法和数组(二维,多维,交错数组)
  7. FTP判断ftp上是否有文件目录,没有就创建的具体案例
  8. html 在线布局,html布局-管理系统布局
  9. USACO 2006 Open, Problem. The Country Fair 动态规划
  10. 移动端自适应缩放代码
  11. Atitit.实现反向代理(1)----url rewrite 配置and内容改写 and -绝对路径链接改写 java php...
  12. bp神经网络预测模型原理,神经网络模型怎么预测
  13. CSS从入门到精通——基础知识
  14. 结构梁配筋最牛插件_结构设计常识分享!结构抗震概念——强柱弱梁
  15. 熟悉scrapy的基本使用(创建与运行,目录结构)---爬虫项目
  16. LogViewer_2
  17. 常用电子元器件参考资料(参数手册大全)
  18. UE4学习笔记(3)——World Composition无缝拼接地图实现
  19. Mac 谷歌浏览器chrome恶意插件劫持Any search(TotalSearchToolbox)处理
  20. vue实现变态表格表头和列固定

热门文章

  1. 关于华硕笔记本R414U,电池没坏,充电器一拔,电脑就直接断电(只用电池供电开不了机)的解决办法
  2. 人教版初中信息技术电子课本_人教版 九年级化学上册 高清电子课本(下载查看文末)...
  3. 新版RE管理器 (Root Explorer)修改方法(去广告,时间日期排序,默认文件夹优先)
  4. 高斯消元相关问题学习和模板整理
  5. 获取下载地址(URL)
  6. 8位基本结构模型计算机,简述8位模型计算机基本结构与原理。
  7. 使用云数据库,国庆快速开发一个微信小程序
  8. 续ShaderEditor、Inspector之后又一成功爆品,2周260+单!
  9. 微信小程序搜索框实现模糊查询
  10. 值得注意的ibatis动态sql语法格式