标题:四阶幻方

把1~16的数字填入4x4的方格中,使得行、列以及两个对角线的和都相等,满足这样的特征时称为:四阶幻方。

四阶幻方可能有很多方案。如果固定左上角为1,请计算一共有多少种方案。
比如:
  1  2 15 16
 12 14  3  5
 13  7 10  4
  8 11  6  9

以及:
  1 12 13  8
  2 14  7 11
 15  3 10  6
 16  5  4  9
 
就可以算为两种不同的方案。

请提交左上角固定为1时的所有方案数字,不要填写任何多余内容或说明文字。

416

解析:四阶幻方,行、列、对角线之和为 (1+2+...+16)/4 = 34。

n阶幻方,行、列、对角线之和为(1+n)/2n。

直接进行dfs,然后判断是否符合条件,程序运行时间很长,需要在深度遍历过程中进行判断。

例如:

1、第一行全部有值后判断,不符合条件立刻返回,不再继续向下遍历;

2、第一行符合要求,向下遍历,第二行全部有值后判断,不符合要求立刻返回,不再继续向下遍历;

3、第二行也符合要求,向下遍历,第三行全部有值后判断,不符合要求立刻返回,不再继续向下遍历;

4、第三行也符合要求,向下遍历,得到整个排列,判断行、列、对角线和是否符合要求,符合计数加一。

#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int arr[16] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int count = 0;
int ans[4][4];//方格 //将排列放入方格内
void arr2ans()
{int temp = 0;for(int i = 0; i < 4; i++)for(int j = 0; j < 4; j++){ans[i][j] = arr[temp];temp++;}
}
//判断是否符合条件
bool is_ok()
{int sum;//对角线 sum = ans[0][0] + ans[1][1] + ans[2][2] + ans[3][3];if(sum != 34) return 0;sum = ans[0][3] + ans[1][2] + ans[2][1] + ans[3][0];if(sum != 34) return 0;for(int i = 0; i < 4; i++){//行 sum = ans[i][0] + ans[i][1] + ans[i][2]+ ans[i][3];if(sum != 34)return 0;}for(int j = 0; j < 4; j++){//列 sum = ans[0][j] + ans[1][j] + ans[2][j]+ ans[3][j];if(sum != 34)return 0;}return 1;
}
void permutation(int arr[],int begin,int end)
{if(begin == end){//全部放置好了,其中前三行符合要求 arr2ans();if(is_ok()){count++;for(int i = 0; i < 4; i++){for(int j = 0; j < 4; j++){cout<<ans[i][j]<<" ";}cout<<endl;}cout<<endl;}return; }if(begin == 4){// 0,1 ,2 3 第一行放置好了 int sum = arr[0] + arr[1] + arr [2] + arr[3];if(sum != 34) return;  }if(begin == 8){//4,5,6,7 第二行也放置好了,行一符合要求 int sum = arr[4] + arr[5] + arr[6] + arr[7];if(sum != 34) return; }if(begin == 12){//8,9,10,11 第三行也放置好了,行一行二符合要求 int sum = arr[8] + arr[9] + arr[10] + arr[11];if(sum != 34) return; } for(int i = begin; i <= end; i++){ swap(arr[i],arr[begin]);permutation(arr,begin+1,end);swap(arr[i],arr[begin]);}}
int main(int argc, char** argv) {permutation(arr,1,15);cout<<count<<endl;return 0;
}

(六决)蓝桥真题 四阶幻方相关推荐

  1. 蓝桥杯赛题——四阶幻方

    标题:四阶幻方 把1~16的数字填入4x4的方格中,使得行.列以及两个对角线的和都相等,满足这样的特征时称为:四阶幻方. 四阶幻方可能有很多方案.如果固定左上角为1,请计算一共有多少种方案. 比如: ...

  2. 【蓝桥真题3】蓝桥改革变难,想进国赛这些能力你可缺一不可

    ⭐️引言⭐️ 大家好,我是执梗.蓝桥杯省赛的倒计时也就剩下一个月的时间了,如果练过近七八年的真题的小伙伴,很明显地能感觉到蓝桥杯的难度越来越大,虽然遥遥还比不上ACM,但它的平均难度正以明显地速度增加 ...

  3. 【蓝桥真题7】贴吧车队作弊?应对线上考和双填趋势,我们该如何备考?

    ⭐️引言⭐️ 大家好,我是执梗.还有一个星期蓝桥杯就要开赛了,但是现在却风起云涌,由于疫情的原因,绝大多数地区已经改为线上考试.理所当然,在这种趋势下,出现作弊行为肯定是无法避免的.甚至在贴吧都沦陷成 ...

  4. 【蓝桥真题1】这道用了7个for循环的蓝桥真题,让舍友哭着跑出考场【内附原题资源】

    ⭐️引言⭐️                 大家好,我是执梗,蓝桥杯的报名快接近尾声,如果有兄弟还没报名不了解比赛,缺少视频讲解和真题资源的一定要阅读一下我的这篇蓝桥全解析--蓝桥全解析.为了帮助兄 ...

  5. 【蓝桥真题4】练练填空就想进国赛?拿下大题才能让你真正有底气(蓝桥31日冲刺打卡)

    ⭐️引言⭐️ 大家好啊,我是执梗.上次出的蓝桥真题三系列受到了很多同学的喜爱,大家问了我许多关于蓝桥杯的问题,我也一一解答了.但我发现起码一半以上的同学存在一个误区--我光靠选择题能拿个省一进国赛吗? ...

  6. 蓝桥杯第六届决赛真题大全解(java版本)

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 >蓝桥杯第六届决赛第一题[(详情(分机号))](http://blog.csdn.net ...

  7. java判断44数组是否是4阶幻方_2015蓝桥杯决赛Java A组 第二题--四阶幻方

    //把1~16的数字填入4x4的方格中,使得行.列以及两个对角线的和都相等,满足这样的特征时称为:四阶幻方. // //四阶幻方可能有很多方案.如果固定左上角为1,请计算一共有多少种方案. //比如: ...

  8. 【蓝桥真题5】带三百人训练了十天精选蓝桥真题,看看他们都练些什么(三门语言题解)

    ⭐️引言⭐️ 大家好啊,我是执梗.最近一周多都没有更新文章了,因为确实是非常忙,在上篇文章了一下开启了蓝桥打卡31日的活动.每天忙着群里管理解答,统计打卡,寻找真题,根本没有时间更新文章.每天也过的非 ...

  9. 【蓝桥真题6】三十块的蓝桥省赛模拟真题,做的大一都直呼上当(文末PDF原题)

    ⭐️引言⭐️ 大家好,我是执梗.这几天蓝桥杯的省赛模拟赛正在开展,报名费一人三十元(没错又是丰收的结节,开始割韭菜了).昨天抽空做了一下,虽然没有出成绩,但是难度确实不高,和这两届的真题难度比起来有点 ...

最新文章

  1. 解决AttributeError: module ‘scipy.misc‘ has no attribute ‘imread‘报错问题
  2. 用Git虚拟文件系统来解决大型存储问题
  3. 大数据和后端学习知识体系思维导图
  4. SpringBoot 2.1.5(36)---整合Mybatis
  5. 电商Sass平台-商城运营后台原型-仓储管理-订单管理-店铺运营-采购管理-数据分析-交易分析-留存分析-客户管理-用户运营-围栏管理-商品管理-流量分析-电商erp后台管理-用户权限-销量分析
  6. Docker 安装 weblogic12c
  7. wpf对数据库简单操作
  8. Gogs 查看 git 代码地址
  9. shell: 脚本获取ssh 端口号
  10. javascript中文乱码问题分析及解决方案
  11. 宝马、奔驰、路虎、捷豹、卡宴、杜比音效DTS音乐下载
  12. 【转】微信小程序测试方法和心得
  13. 【Git】<分布式版本控制系统>版本控制器Git概述
  14. 解决无法删除文件夹的情况:文件夹正在使用,操作无法完成,因为其中的文件,或文件夹已在另一个程序中打开...
  15. c语言编程中句柄无效怎么解决,句柄无效,小编教你句柄无效怎么解决
  16. 参考美团大众点评合并,掌握APP推广妙招
  17. Realtek PCIe GBE Family Controller(有线网卡)及Intel(R) Wi-Fi 6 AX201 160MHz(无线网卡)前出现出现黄色感叹号!解决方法。(win10)
  18. Springboot之监控健康状况
  19. Go语言 rand(随机数)包
  20. xss获取键盘记录实验演示

热门文章

  1. easyswoole上传图片和访问
  2. 运行循环(Run Loops)
  3. 去掉MacOS(MacBook)复制的时候的咔嚓声、为什么复制时会出现两次咔嚓声
  4. 通过unix时间戳获得两个时间相差多少自然日
  5. 日系插画培训网课怎么选
  6. 制作自己的Vscode主题插件
  7. VSCode主题颜色的更改,让字体变暗一些,不那么刺眼(类IDEA风)
  8. 微信小程序开发之——用户登录-检查用户是否已经登录(4)
  9. tiktok新号发布的视频播放量为零解决方案
  10. CodeVS 第一次月赛 题解