题目:把1-16,16个数字填入一个四阶矩阵,要求矩阵的每行、每列、两个对角线上四个数字的和均相等。请编程列出所有的矩阵

思路:每行、列对角线都相等,即他们的和都是34,所以先列举出所有和为34的组合,再列举出所有“行的和为34”的矩阵,再调整使之列、对角线均为34。调整列和对角线的过程中的枚举有些问题,最后得出七个矩阵,还不能判定该程序是否正确,仅作为一种思路的参考。

#include <stdio.h>
#include <memory.h>
int sum_34[100][4];
int array_line_34[400][4][4];
int array_row_34[120][4][4];
int array_final[120][4][4];
int array_row_34_num=0;bool count_final(int temp[4][4]){//调整使对角线的和为34int i,j,k,l,m=0;int temp2[4][4];memset(temp2,0,sizeof(temp2));for (i=0;i<4;i++){for (j=0;j<4;j++){for (k=0;k<4;k++){for(l=0;l<4;l++){if (temp[0][i]+temp[1][j]+temp[2][k]+temp[3][l]==34&&i!=j&&i!=k&&i!=l&&j!=k&&j!=l&&k!=l){for (m=0;m<4;m++){temp2[m][0]=temp[m][i];}for (m=0;m<4;m++){temp2[m][1]=temp[m][j];}for (m=0;m<4;m++){temp2[m][2]=temp[m][k];}for (m=0;m<4;m++){temp2[m][3]=temp[m][l];}if (temp2[0][3]+temp2[1][2]+temp2[2][1]+temp2[3][0]==34){memcpy(temp,temp2,sizeof(temp2));memset(temp2,0,sizeof(temp2));return true;}}}}}}return false;
}bool count_row(int temp[4][4]){//调整使列的和为34int i,j,k,l,m=0;int temp2[4][4];int temp3[4][4];memset(temp2,0,sizeof(temp2));memcpy(temp3,temp,sizeof(temp3));for (i=0;i<4;i++){for (j=0;j<4;j++){for (k=0;k<4;k++){for(l=0;l<4;l++){if (temp3[0][i]+temp3[1][j]+temp3[2][k]+temp3[3][l]==34){temp2[0][m]=temp3[0][i];temp2[1][m]=temp3[1][j];temp2[2][m]=temp3[2][k];temp2[3][m]=temp3[3][l];temp3[0][i]=temp3[1][j]=temp3[2][k]=temp3[3][l]=0;m++;}if (temp2[3][3]!=0){memcpy(array_row_34[array_row_34_num],temp2,sizeof(temp2));array_row_34_num++;memcpy(temp3,temp,sizeof(temp3));memset(temp2,0,sizeof(temp2));return true;}}}}}//    elsereturn true;
}bool count_line(int temp[4][4]){//现在每行的和为34,但是可能有重复的数字,所以要把有重复数字的矩阵去掉int number[17];memset(number,0,sizeof(number));int i=0,j=0;for(i=0;i<4;i++){for(j=0;j<4;j++){if(number[temp[i][j]]==1)return false;elsenumber[temp[i][j]]=1;}}return true;
}void main(){int i,j,k,l,sum_34_num=0;for(i=1;i<=16;i++){for (j=i+1;j<=16;j++){for(k=j+1;k<=16;k++){for (l=k+1;l<=16;l++){if (i+j+k+l==34){sum_34[sum_34_num][0]=i;sum_34[sum_34_num][1]=j;sum_34[sum_34_num][2]=k;sum_34[sum_34_num][3]=l;sum_34_num++;}}}}}
//  for (i=0;i<sum_34_num;i++)
//  {
//      printf("%d %d %d %d\n",sum_34[i][0],sum_34[i][1],sum_34[i][2],sum_34[i][3]);
//  }int m=0,array_line_34_num=0;int temp[4][4];for (i=0;i<sum_34_num-3;i++){for (j=i+1;j<sum_34_num-2;j++){for (k=j+1;k<sum_34_num-1;k++){for (l=k+1;l<sum_34_num;l++){for (m=0;m<4;m++){temp[0][m]=sum_34[i][m];temp[1][m]=sum_34[j][m];temp[2][m]=sum_34[k][m];temp[3][m]=sum_34[l][m];}if (count_line(temp)){memcpy(array_line_34[array_line_34_num],temp,sizeof(temp));array_line_34_num++;}}}}}for (i=0;i<array_line_34_num;i++){memcpy(temp,array_line_34[i],sizeof(array_line_34[i]));count_row(temp);}int array_final_num=0;for (i=0;i<array_row_34_num;i++){memcpy(temp,array_row_34[i],sizeof(array_row_34[i]));if (count_final(temp)){memcpy(array_final[array_final_num],temp,sizeof(temp));array_final_num++;}}for (i=0;i<array_final_num;i++){for (k=0;k<4;k++){printf("%d %d %d %d\n",array_final[i][k][0],array_final[i][k][1],array_final[i][k][2],array_final[i][k][3]);}printf("\n");}}

  

转载于:https://www.cnblogs.com/txlbupt/p/3188738.html

ZTE-中兴捧月-北京线下测试赛--B题相关推荐

  1. 2020中兴捧月算法赛道傅里叶派赛题菜鸡回顾

    最近抱着试水的心理参加了2020中兴捧月算法大赛傅里叶派赛题.从4.19号由旁观者转变为参赛者,到5.8号提交完成最后的文档和代码,前后算起来也有20天了.虽然自己比较菜,但毕竟是第一次参加这种比较正 ...

  2. kaldi群北京线下交流会(2017年4月9日)

    kaldi群北京线下交流会(2017年4月9日) 2017年4月5日更新: 首先感谢来自搜狗的陈伟大大提供场地和作为发言人,非常感谢. 其次,这次kaldi线下第二次交流会正式确定,时间为4月9日下午 ...

  3. 谈谈中兴捧月大赛决赛以及总结

    前言 四月份,在师兄的推荐下,报名参加了中兴捧月大赛.一开始只是为了混一个面笔试的资格(因为提交有效成绩即可免笔试),然后为了找一个简单的赛道,注册了几个号看了两三个赛道的题目.发现自己每个都不熟悉, ...

  4. 中兴捧月大赛之方案探讨

    昨天参加完中兴捧月的决赛,感觉特别的糟糕.说实话,感觉中兴这次比赛搞得真的很奇葩!一是比赛搞得让我觉得公司对整个比赛的态度有点随意,有点不正式.二是比赛的赛题要求每天都在变,感觉不天天关注活动交流区, ...

  5. 2023第十三届“中兴捧月”全球精英挑战赛今日正式启动

    3月31日,第十三届"中兴捧月"全球精英挑战赛正式启动! 由中兴通讯主办的"中兴捧月"大赛,自2009年首次举办至今,已走过13个年头,是广大高校师生的重点关注 ...

  6. Deepsort_V2 2020中兴捧月阿尔法赛道多目标检测和跟踪初赛第一名

    2020中兴捧月阿尔法赛道多目标检测和跟踪初赛第一名方案 初赛:多目标跟踪:指标MOTA和MOTP, 后期的大量实验证明检测算法相对于跟踪更重要. 数据集分析: 1.人群密集稀疏场景: 2.场景(白天 ...

  7. “中兴捧月”报文监视器的实现

    前一段时间和几个好友组队参加了中兴举办的"中兴捧月杯"程序设计大赛,跌跌撞撞竟然进了复赛,不过最终还是没能入围区域决赛,还是感觉很遗憾.这里把当时复赛的题目以及我们被Out的代码拿 ...

  8. dataguru北京线下沙龙-第二部 《Oracle 索引优化思路--案例分享 -- 刘盛》

    [视频:dataguru北京线下沙龙-第二部 <Oracle 索引优化思路--案例分享 -- 刘盛> /微笑]

  9. 2020年中兴捧月算法大赛---埃德加考特派赛题解析及代码

    写在前面 三月份疫情期间在家闲来无事, 各大公司举办了很多的算法比赛, 但是大多是人工智能相关, 而我这个菜鸡又不会这方面的, 这时发现了中兴捧月的埃德加考特派赛道, 也就是数据库相关本科课设, 恰好 ...

最新文章

  1. jsPlumb之流程图项目总结及实例
  2. Unity的学习笔记(鼠标移动控制视角移动)
  3. Python zipfile 文件名称编码 file_name.encode(‘cp437‘).decode(‘gbk‘)
  4. 将RGB值转换为灰度值的简单算法(转)
  5. AngularJS双向数据绑定实例
  6. 如何在ubuntu上安装virtualbox的driver module vboxdrv
  7. UVa 1326 - Jurassic Remains
  8. python实现自动提取句子中的关键字
  9. 一张图看透办公网安全
  10. mysql数据同步到ElasticSearch中 之 logstash
  11. asp中把数据导出为excel的2种方法
  12. 一个统计文章字数的算法,求改进
  13. caml library
  14. logisim 快速加法器设计实验报告_八位加法器设计实验报告
  15. 测试既是一门科学,也是一门艺术
  16. 操作系统中的虚拟内存详解
  17. audiosever耗电_audio服务自动停止 - 卡饭网
  18. 搜索引擎收录查询,是什么影响了网站被搜索引擎收录
  19. 计算机网络发展及相关概念
  20. 网络与通信:网络协议(概念)

热门文章

  1. 十八岁华裔天才携手「量子计算先驱」再次颠覆量子计算
  2. 也谈压缩感知和贝叶斯大脑
  3. 直击2018AWE:智能语言交互大厮杀、老品牌争先搭建平台、第三方平台迅速崛起
  4. 揭秘:一个月不摸鱼能写多少代码?
  5. 主板上来了一个新邻居,CPU 慌了!
  6. OMG!Semaphore里面居然有这么一个大坑!
  7. 表表达式,Substring, CharIndex, 多行数据变同一行的用法
  8. 例5.12 输入一串字符,字符个数不超过100,且以.结束。 (信息学奥赛一本通)...
  9. 各种好的开源项目-转载
  10. heartbeat之part1