当前位置: 首页 > news >正文

2024年蓝桥杯省赛C++大学A组试题整理

2024年蓝桥杯省赛A整理

1.五子棋对弈

五子棋博弈
本题题目中所描述的所求是不同的棋局情况,但是事实上要求的其实是棋面情况(即最后棋盘下满后的情况,并不会对固定棋盘下满情况下具体下棋的先后手进行要求)
对于本道题目我们直接考虑枚举,最后棋盘上是会存在13个白子和12个黑子。当我们将黑子的位置确定后,白子的位置也就随即确定。因此我们只需要枚举12个黑子的位置情况。
我们采用先枚举12个黑子在棋盘的25个格子中任意放置的所有情况,之后在检查没中情况是否符合平局的要求。
那么我们就需要设计一个用以枚举所有可能情况的函数(dfs),以及一个可以判断是否满足平局条件的函数(check)。
check函数的构造是容易的,我们下面考虑函数dfs的构造。
我们设dfs(int i,int x)
其中i表示当前枚举到了第i个黑子,x表示当前黑子所在第x个格子中,我们对x计算x/5和x%5便可以得到x对应的横纵坐标。
在我们已经确定第i个黑子落于位置x处后,若i==12,则我们已经枚举完所有的黑子,可以进行check()
若i!=12,则我们第i+1个黑子可能落在所有x+1,…24中的任意一个格子中.我们在此处需要用循环进行枚举。
在最后完成枚举之后,用于回溯,我们需要再将棋盘中的黑子变为白子。
AC代码(第一次提交)

#include<iostream>#include<cstdio>#include<algorithm>usingnamespacestd;intans=0;intg[10][10];boolcheck(){if(g[0][0]==g[1][1]&&g[0][0]==g[2][2]&&g[0][0]==g[3][3]&&g[0][0]==g[4][4])returnfalse;if(g[0][4]==g[1][3]&&g[0][4]==g[2][2]&&g[0][4]==g[3][1]&&g[0][4]==g[4][0])returnfalse;for(inti=0;i<5;i++){intsum=0;for(intj=0;j<5;j++){sum+=g[i][j];}if(sum%5==0)returnfalse;}for(intj=0;j<5;j++){intsum=0;for(inti=0;i<5;i++){sum+=g[i][j];}if(sum%5==0)returnfalse;}returntrue;}voidprint(){for(inti=0;i<=4;i++){for(intj=0;j<=4;j++)cout<<g[i][j]<<' ';cout<<endl;}cout<<endl;}voiddfs(inti,intx){g[x/5][x%5]=1;if(i==12){if(check()){ans++;}else{g[x/5][x%5]=0;return;}}for(intj=x+1;j<=24;j++){dfs(i+1,j);}g[x/5][x%5]=0;}intmain(){for(inti=0;i<24;i++){dfs(1,i);}cout<<ans;return0;}

(复写代码,发现斜着的连线也可以使用取模判断的方法来简化写法,即便是void类型的函数,也可以在结束时就写好return,这样可以避免因为某些分支忘记回溯导致出错)

#include<iostream>#include<cstdio>#include<algorithm>usingnamespacestd;intg[28][28];longlongans=0;boolcheck(){for(inti=0;i<5;i++){intsum=0;for(intj=0;j<5;j++){sum+=g[i][j];}if(sum%5==0)returnfalse;}for(inti=0;i<5;i++){intsum=0;for(intj=0;j<5;j++){sum+=g[j][i];}if(sum%5==0)returnfalse;}intsum=g[0][0]+g[1][1]+g[2][2]+g[3][3]+g[4][4];if(sum%5==0)returnfalse;sum=g[4][0]+g[3][1]+g[2][2]+g[1][3]+g[0][4];if(sum%5==0)returnfalse;returntrue;}voiddfs(inti,intx){g[x/5][x%5]=1;if(i==12){if(check()){ans++;g[x/5][x%5]=0;return;}}for(intj=x+1;j<=24;j++){dfs(i+1,j);}g[x/5][x%5
http://www.jsqmd.com/news/459521/

相关文章:

  • Qwen-Image-2512-SDNQ WebUI实战:中英文混合Prompt生成准确率实测报告
  • Hunyuan-MT-7B法律场景案例:涉外合同翻译系统部署教程
  • 星期二
  • FLUX.1-dev显存溢出?多卡GPU切分部署解决方案详解
  • 从入门到精通:列表、元组、字典
  • unreal5_mover+gasp学习笔记第1篇
  • FASTJSON库:阿里出品java界json解析库,使用与踩坑记录
  • 高阶函数
  • Qwen3-0.6B-FP8效果展示:FP8量化后中文成语理解、隐喻识别准确率对比
  • 导师不敢说!揭秘7款AI神器,30分钟生成3万字问卷论文 - 麟书学长
  • AutoHotKey 脚本 - win10 自动连接无线显示器
  • Qwen3-8B医疗问答系统实战:合规性与准确性平衡
  • StructBERT中文句向量惊艳效果展示:‘支持微信支付‘vs‘可用微信付款‘相似度0.93
  • Python3.9+GPU加速开发实战:Miniconda环境CUDA配置详解
  • ACE-Step实战案例:短视频配乐自动生成详细步骤
  • GTE中文嵌入模型多场景落地:中文直播弹幕实时聚类与高热话题发现系统
  • Streamlit人脸检测应用开发:cv_resnet101_face-detection_cvpr22papermogface界面定制化指南
  • lingbot-depth-vitl14多分辨率适配教程:448x448/336x336输入尺寸设置与精度影响分析
  • 仿真学习之有限元分析
  • Qwen-Image-Edit从零开始:显存仅需8GB,支持1024×1024高清图编辑教程
  • Fun-ASR识别速度慢?批处理大小与GPU缓存优化实战
  • Sonic数字人视频合成教程:精准控制duration防穿帮
  • 比迪丽SDXL模型部署指南:WebUI开箱即用,6秒出图实操手册
  • DAMO-YOLO手机检测多场景落地:产线质检、课堂监考、零售防盗应用解析
  • STM32 FOC无感控制电机的实现
  • Ubuntu20.04: virt-manager安装后出现QEMU/KVM - Not Connected
  • Ostrakon-VL-8B中小企业落地案例:3人运营团队用该镜像日省2小时人工巡检
  • Nanbeige4.1-3B WebUI定制:支持Markdown渲染、LaTeX公式、代码块高亮增强
  • PyTorch 2.5显存不足?多卡并行优化部署教程一文详解
  • AI读脸术延迟突增?系统资源监控与优化实战