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

五子棋对弈

问题描述

"在五子棋的对弈中,友谊的小船说翻就翻?" 不!对小蓝和小桥来说,五子棋不仅是棋盘上的较量,更是心与心之间的沟通。这两位挚友秉承着"友谊第一,比赛第二"的宗旨,决定在一块 5×55×5 的棋盘上,用黑白两色的棋子来决出胜负。但他们又都不忍心让对方失落,于是决定用一场和棋(平局)作为彼此友谊的见证。

比赛遵循以下规则:

  1. 棋盘规模:比赛在一个 5×55×5 的方格棋盘上进行,共有 2525 个格子供下棋使用。
  2. 棋子类型:两种棋子,黑棋与白棋,代表双方。小蓝持白棋,小桥持黑棋。
  3. 先手规则:白棋(小蓝)具有先手优势,即在棋盘空白时率先落子(下棋)。
  4. 轮流落子:玩家们交替在棋盘上放置各自的棋子,每次仅放置一枚。
  5. 胜利条件:率先在横线、竖线或斜线上形成连续的五个同色棋子的一方获胜。
  6. 平局条件:当所有 2525 个棋盘格都被下满棋子,而未决出胜负时,游戏以平局告终。

在这一设定下,小蓝和小桥想知道,有多少种不同的棋局情况,既确保棋盘下满又保证比赛结果为平局。

答案提交

这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

运行限制

语言最大运行时间最大运行内存
C++1s256M
C1s256M
Java3s512M
Python310s512M
PyPy33s512M
Go5s512M
JavaScript5s512M

总通过次数: 721 |总提交次数: 1521 |通过率: 47.4%c茶

超时代码

#include <bits/stdc++.h>
using namespace std;
int mp[6][6];
int cnt;
bool check()
{int cnt1  = 0, cnt2 = 0;for(int i = 1; i <= 5; i++){for(int j = 1; j <= 5; j++){if(mp[i][j] == 1)cnt1++;if(mp[i][j] == 2)cnt2++;}}if(cnt1 != 12 || cnt2 != 13)    return false;for(int i = 1; i <= 5; i++){int flag = true;for(int j = 1; j <= 5; j++){if(mp[i][j] != mp[i][1]){flag = false;break;}}if(flag)    return false;}for(int i = 1; i <= 5; i++){int flag = true;for(int j = 1; j <= 5; j++){if(mp[j][i] != mp[1][i]){flag = false;break;} }if(flag)    return false;}int flag = true;for(int i = 1; i <= 5; i++){int  j = i;if(mp[i][j] != mp[1][1]){flag = false;break;}}if(flag)    return false;flag = true;for(int i = 1; i <= 5; i++){int j = 6 - i;if(mp[i][j] != mp[5][1]){flag = false;break;}}if(flag)    return false;return true;}
void dfs(int a, int b)
{if(b == 6){dfs(a + 1, 1); return;}if(a == 6){if(check())cnt++;return;}mp[a][b] = 1;dfs(a, b + 1);mp[a][b] = 0;mp[a][b] = 2;dfs(a, b + 1);mp[a][b] = 0;
}
int main()
{dfs(1, 1);cout << cnt << endl;
}

ac代码

#include<iostream>
using namespace std;
int mp[5][5];
long long sum=0;
void check(){int a=0;for(int i=0;i<5;i++){for(int j=0;j<5;j++){if(mp[i][j]==1) a++;}}if(a!=13) return;//此时满足13-12 int count=0;count+=mp[0][0]+mp[1][1]+mp[2][2]+mp[3][3]+mp[4][4];if(count%5==0) return; count=0;count+=mp[0][4]+mp[1][3]+mp[2][2]+mp[3][1]+mp[4][0];if(count%5==0) return; count=0;for(int i=0;i<5;i++){count+=mp[i][0]+mp[i][1]+mp[i][2]+mp[i][3]+mp[i][4];if(count%5==0) return; count=0;count+=mp[0][i]+mp[1][i]+mp[2][i]+mp[3][i]+mp[4][i];if(count%5==0) return; count=0;}//满足平局 sum++;
}
void dfs(int num){//依次由从左往右,再到从上往下的顺序遍历if(num==25){//棋盘下满 check();return;}int x=num/5,y=num%5;//换算成坐标mp[x][y]=0;dfs(num+1);mp[x][y]=1;dfs(num+1);
}
int main(){dfs(0);//从0开始,遍历所有结果cout<<sum;//3126376return 0;
}
#include <bits/stdc++.h>
using namespace std;
int mp[5][5];
int u=0;
void dfs(int sum,int h,int b)
{//地图满了;判断if(sum==25){if(h==13&&b==12){for(int i=0;i<5;i++){int s=mp[i][0]+mp[i][1]+mp[i][2]+mp[i][3]+mp[i][4];if(s==5||s==0) return;}for(int i=0;i<5;i++){int m=mp[0][i]+mp[1][i]+mp[2][i]+mp[3][i]+mp[4][i];if(m==5||m==0) return;}int p=mp[0][0]+mp[1][1]+mp[2][2]+mp[3][3]+mp[4][4];int l=mp[0][4]+mp[1][3]+mp[2][2]+mp[3][1]+mp[4][0];if(p==0||p==5||l==0||l==5) return;u++;}return;}int x=sum/5;int y=sum%5;//计算坐标mp[x][y]=1;//选择白棋dfs(sum+1,h+1,b);mp[x][y]=0;选择黑棋dfs(sum+1,h,b+1);
}
int main()
{dfs(0,0,0);cout<<u;return 0;
}
#include <bits/stdc++.h>
using namespace std;
int ans, upp = (1 << 5) - 1;
bitset<5>area[6];
bool check(int y)
{if (area[y].count() == 5 || area[y].count() == 0)return false;if (y == 5){int sum = 0;int _sum = 0;for (int i = 0; i < 5; i++){sum = 0;for (int j = 1; j <= 5; j++)sum += area[j][i], _sum += area[j][i];if (sum == 0 || sum == 5)return false;}if (_sum != 13)return false;int suml = 0, sumr = 0;for (int i = 1; i <= 5; i++){suml += area[i][i-1];sumr += area[i][5-i];}if (suml == 5 || suml == 0 || sumr == 5 || sumr == 0)return false;}return true;
}
void dfs(int y)
{if (y == 6){ans++;return;}for (int i = 1; i <= upp; i++){bitset<5>temp(i);area[y] = temp;if (check(y))dfs(y + 1);}
}
int main()
{dfs(1);cout << ans;return 0;
}

相关文章:

五子棋对弈

问题描述 "在五子棋的对弈中&#xff0c;友谊的小船说翻就翻&#xff1f;" 不&#xff01;对小蓝和小桥来说&#xff0c;五子棋不仅是棋盘上的较量&#xff0c;更是心与心之间的沟通。这两位挚友秉承着"友谊第一&#xff0c;比赛第二"的宗旨&#xff0c;决…...

vue vscode插件推荐安装

在 VSCode 中开发 Vue&#xff0c;推荐安装以下插件&#xff1a; 核心插件 1. Volar&#xff08;Vue Language Features&#xff09; - Vue 3 官方推荐的开发工具&#xff0c;替代 Vetur。 This extension is deprecated. Use the Vue - Official extension instead. 1.Vue …...

Med-R2:基于循证医学的检索推理框架:提升大语言模型医疗问答能力的新方法

Med-R2 : Crafting Trustworthy LLM Physicians through Retrieval and Reasoning of Evidence-Based Medicine Med-R2框架Why - 这个研究要解决什么现实问题What - 核心发现或论点是什么How - 1. 前人研究的局限性How - 2. 你的创新方法/视角How - 3. 关键数据支持How - 4. 可…...

P7497 四方喝彩 Solution

Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1​,a2​,⋯,an​)&#xff0c;有 m m m 个操作&#xff0c;分四种&#xff1a; add ⁡ ( l , r , v ) \operatorname{add}(l,r,v) add(l,r,v)&#xff1a;对于所有 i ∈ [ l , r ] i \in [l,r…...

EtherCAT主站IGH-- 29 -- IGH之mailbox.h/c文件解析

EtherCAT主站IGH-- 29 -- IGH之mailbox.h/c文件解析 0 预览一 该文件功能`mailbox.c` 文件功能函数预览二 函数功能介绍`mailbox.c` 中主要函数的作用1. `ec_slave_mbox_prepare_send`2. `ec_slave_mbox_prepare_check`3. `ec_slave_mbox_check`4. `ec_slave_mbox_prepare_fetc…...

UI线程用到COM只能选单线程模型

无论用不用UI库&#xff0c;哪怕是用Win32 API手搓UI&#xff0c;UI线程要用COM的话&#xff0c;必须初始化为单线程单元(STA)&#xff0c;即CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);&#xff0c;不能用MULTITHREADTHREADED。 实际上&#xff0c;很多(WPF等)UI库若…...

排序算法--桶排序

核心思想为分区间排序后合并。适用于数据均匀分布在一个范围内&#xff0c;或浮点数排序或范围明确的数据。如果需要处理整数或其他数据范围&#xff0c;可以通过调整BUCKET_RANGE的计算方式实现&#xff0c;例如对[0,100)的整数排序&#xff1a; int index arr[i] / 10; // …...

zsh安装插件

0 zsh不仅在外观上比较美观&#xff0c;而且其具有强大的插件&#xff0c;如果不使用那就亏大了。 官方插件库 https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins 官方插件库并不一定有所有的插件&#xff0c;比如zsh-autosuggestions插件就不再列表里&#xff0c;下面演示zs…...

bypass hcaptcha、hcaptcha逆向

可以过steam&#xff0c;已支持并发&#xff0c;欢迎询问&#xff01; 有事危&#xff0c;ProfessorLuoMing...

python-UnitTest框架笔记

UnitTest框架的基本使用方法 UnitTest框架介绍 框架&#xff1a;framework&#xff0c;为了解决一类事情的功能集合 UnitTest框架&#xff1a;是python自带的单元测试框架 自带的&#xff0c;可以直接使用&#xff0c;不需要格外安装 测试人员用来做自动化测试&#xff0c;作…...

掌握API和控制点(从Java到JNI接口)_35 JNI开发与NDK 03

3、 如何载入 .so档案 VM的角色 由于Android的应用层级类别都是以Java撰写的&#xff0c;这些Java类别转译为Dex型式的Bytecode之后&#xff0c;必须仰赖Dalvik虚拟机器(VM: Virtual Machine)来执行之。 VM在Android平台里&#xff0c;扮演很重要的角色。此外&#xff0c;在执…...

计算机组成原理——存储系统(二)

&#x1f331; "人生最深的裂痕&#xff0c;往往是光照进来的地方。 别怕脚下的荆棘&#xff0c;那是你与平庸划清界限的勋章&#xff1b;别惧眼前的迷雾&#xff0c;星辰永远藏在云层之上。真正的强者不是从未跌倒&#xff0c;而是把每一次踉跄都踏成攀登的阶梯。记住&am…...

CDDIS从2025年2月开始数据迁移

CDDIS 将从 2025 年 2 月开始将我们的网站从 cddis.nasa.gov 迁移到 earthdata.nasa.gov&#xff0c;并于 2025 年 6 月结束。 期间可能对GAMIT联网数据下载造成影响。...

VSCode设置内容字体大小

1、打开VSCode软件&#xff0c;点击左下角的“图标”&#xff0c;选择“Setting”。 在命令面板中的Font Size处选择适合自己的字体大小。 2、对比Font Size值为14与20下的字体大小。...

嵌入式学习---蜂鸣器篇

1. 蜂鸣器分类 蜂鸣器是一种电子发声器件&#xff0c;采用直流电压供电&#xff0c;能够发出声音。广泛应用于计算机、打印机、报警器、电子玩具等电子产品中作为发声部件。一般仅从外形不易分辨蜂鸣器的种类。但是有些蜂鸣器使用广泛&#xff0c;见得多了就很容易分辨。例如常…...

【优先算法】专题——前缀和

目录 一、【模版】前缀和 参考代码&#xff1a; 二、【模版】 二维前缀和 参考代码&#xff1a; 三、寻找数组的中心下标 参考代码&#xff1a; 四、除自身以外数组的乘积 参考代码&#xff1a; 五、和为K的子数组 参考代码&#xff1a; 六、和可被K整除的子数组 参…...

【Linux】使用管道实现一个简易版本的进程池

文章目录 使用管道实现一个简易版本的进程池流程图代码makefileTask.hppProcessPool.cc 程序流程&#xff1a; 使用管道实现一个简易版本的进程池 流程图 代码 makefile ProcessPool:ProcessPool.ccg -o $ $^ -g -stdc11 .PHONY:clean clean:rm -f ProcessPoolTask.hpp #pr…...

使用Express.js和SQLite3构建简单TODO应用的后端API

使用Express.js和SQLite3构建简单TODO应用的后端API 引言环境准备代码解析1. 导入必要的模块2. 创建Express应用实例3. 设置数据库连接4. 初始化数据库表5. 配置中间件6. 定义数据接口7. 定义路由7.1 获取所有TODO项7.2 创建TODO项7.3 更新TODO项7.4 删除TODO项 8. 启动服务器 …...

Vue3 表单:全面解析与最佳实践

Vue3 表单&#xff1a;全面解析与最佳实践 引言 随着前端技术的发展&#xff0c;Vue.js 已经成为最受欢迎的前端框架之一。Vue3 作为 Vue.js 的最新版本&#xff0c;带来了许多改进和新的特性。其中&#xff0c;表单处理是 Vue 应用中不可或缺的一部分。本文将全面解析 Vue3 …...

找不到msvcp140.dll解决方法

您可以尝试以下方案进行修复&#xff0c;看看是否可以解决这个问题&#xff1a; 一、重新注册 msvcp140.dll 运行库文件&#xff1a; “WinR”打开运行&#xff0c;键入&#xff1a;regsvr32 MSVCP140.dll&#xff0c;回车即可&#xff1b; 如果出现找不到该文件的提示&…...

【优先算法】专题——位运算

在讲解位运算之前我们来总结一下常见的位运算 一、常见的位运算 1.基础为运算 << &&#xff1a;有0就是0 >> |&#xff1a;有1就是1 ~ ^&#xff1a;相同为0&#xff0c;相异位1 /无进位相加 2.给一个数 n&#xff0c;确定它的二进制表示…...

【Cadence仿真技巧学习笔记】求解65nm库晶体管参数un, e0, Cox

在设计放大器的第一步就是确定好晶体管参数和直流工作点的选取。通过阅读文献&#xff0c;我了解到L波段低噪声放大器的mos器件最优宽度计算公式为 W o p t . p 3 2 1 ω L C o x R s Q s p W_{opt.p}\frac{3}{2}\frac{1}{\omega LC_{ox}R_{s}Q_{sp}} Wopt.p​23​ωLCox​Rs…...

AI模型升级版0.03

以下是一个升级版的代码实现&#xff0c;结合了最新的技术趋势&#xff0c;例如强化微调&#xff08;Reinforcement Fine-Tuning&#xff09;和一些优化改进&#xff0c;以提升模型的性能和易用性。以下是升级后的代码&#xff1a; 步骤 1&#xff1a;安装必要的库 确保安装了…...

Docker入门篇(Docker基础概念与Linux安装教程)

目录 一、什么是Docker、有什么作用 二、Docker与虚拟机(对比) 三、Docker基础概念 四、CentOS安装Docker 一、从零认识Docker、有什么作用 1.项目部署可能的问题&#xff1a; 大型项目组件较多&#xff0c;运行环境也较为复杂&#xff0c;部署时会碰到一些问题&#xff1…...

开源智慧园区管理系统对比其他十种管理软件的优势与应用前景分析

内容概要 在当今数字化快速发展的时代&#xff0c;园区管理软件的选择显得尤为重要。而开源智慧园区管理系统凭借其独特的优势&#xff0c;逐渐成为用户的新宠。与传统管理软件相比&#xff0c;它不仅灵活性高&#xff0c;而且具有更强的可定制性&#xff0c;让各类园区&#…...

【C++】P5734 【深基6.例6】文字处理软件

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述&#x1f4af;题目描述输入格式输出格式示例输入与输出输入&#xff1a;输出&#xff1a; &#x1f4af;我的做法操作1&#xff1a;在文档末尾插入字符串操作2&…...

doris:删除操作概述

在 Apache Doris 中&#xff0c;删除操作&#xff08;Delete&#xff09;是一项关键功能&#xff0c;用于管理和清理数据&#xff0c;以满足用户在大规模数据分析场景中的灵活性需求。 Doris 提供了丰富多样的删除功能支持&#xff0c;包括&#xff1a;DELETE 语句、删除标记&…...

CSS核心

CSS的引入方式 内部样式表是在 html 页面内部写一个 style 标签&#xff0c;在标签内部编写 CSS 代码控制整个 HTML 页面的样式。<style> 标签理论上可以放在 HTML 文档的任何地方&#xff0c;但一般会放在文档的 <head> 标签中。 <style> div { color: r…...

013-51单片机红外遥控器模拟控制空调,自动制冷制热定时开关

主要功能是通过红外遥控器模拟控制空调&#xff0c;可以实现根据环境温度制冷和制热&#xff0c;能够通过遥控器设定温度&#xff0c;可以定时开关空调。 1.硬件介绍 硬件是我自己设计的一个通用的51单片机开发平台&#xff0c;可以根据需要自行焊接模块&#xff0c;这是用立创…...

CMake项目编译与开源项目目录结构

Cmake 使用简单方便&#xff0c;可以跨平台构建项目编译环境&#xff0c;尤其比直接写makefile简单&#xff0c;可以通过简单的Cmake生成负责的Makefile文件。 如果没有使用cmake进行编译&#xff0c;需要如下命令&#xff1a;&#xff08;以muduo库echo服务器为例&#xff09;…...