【ybt】【基算 深搜 课过 例2】数独游戏

深搜巧解数独(C语言版) 简单的深搜思想,复杂的数独难题,你值得拥有! 立即下载

数独游戏

题目链接:数独游戏


题目描述

在这里插入图片描述

解题思路

这道题很明显是深搜。

用三个数组分别保存当前行、列、和格子已经用过的数字。

然后搜索即可。

code

#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
using namespace std;

string T;
int ok;
int a[10][10];
int h[10][10],l[10][10],g[4][4][10];

int ch(int t)
{
	if(t<=3)
		return 1;
	if(t>3&&t<=6)
		return 2;
	if(t>6&&t<=9)
		return 3;
}

void dfs(int x,int y)
{
	if(ok)
		return;
	if(x>9&&y==1)
	{
		for(int i=1;i<=9;i++)
			for(int j=1;j<=9;j++)
				cout<<a[i][j];
		ok=1;
		return;
	}
	if(a[x][y])
	{
		if(y==9)
			dfs(x+1,1);
		else
			dfs(x,y+1);
	}
	else for(int i=1;i<=9;i++)
		if(!h[x][i]&&!l[y][i]&&!g[ch(x)][ch(y)][i])
		{
			a[x][y]=i;
			h[x][i]=1;
			l[y][i]=1;
			g[ch(x)][ch(y)][i]=1;
			if(y==9)
				dfs(x+1,1);
			else
				dfs(x,y+1);
			a[x][y]=0;
			h[x][i]=0;
			l[y][i]=0;
			g[ch(x)][ch(y)][i]=0;
		}
}

int main()
{
	while(cin>>T)
	{
		if(T=="end")
			return 0;
		for(int i=1;i<=9;i++)
			for(int j=1;j<=9;j++)
			{
				if(T[(i-1)*9+j-1]>='0'&&T[(i-1)*9+j-1]<='9')
				{
					a[i][j]=T[(i-1)*9+j-1]-'0';
					h[i][a[i][j]]=1;
					l[j][a[i][j]]=1;
					g[ch(i)][ch(j)][a[i][j]]=1;
				}
				else
					a[i][j]=0;
			}
		ok=0;
		dfs(1,1);
		cout<<endl;
		memset(a,0,sizeof(a));
		memset(h,0,sizeof(h));
		memset(l,0,sizeof(l));
		memset(g,0,sizeof(g));
	}
}
MATLAB 论文复现——基于虚拟储能的电动汽车充放电调度策略及激励评价 文章基于虚拟储能聚合体仿真模型优化电动汽车充放电调度,并采用复合权重评价电动汽车的充电激励。根据电动汽车灵活性和系统稳定性衡量其贡献大小,并通过模糊推理系统模拟用户的充电意愿,实现对电动汽车充电的引导和优化。[1]陈朔,胡昊,方慧敏,等.基于虚拟储能的电动汽车充放电调度策略及激励评价[J/OL].系统仿真学报,1-12[2024-07-24].https://doi.org/10.16182/j.issn1004731x.joss.23-1316.基于虚拟储能的电动汽车充放电调度策略及激励评价。 阅读详情

相关推荐

从VASP数据到LAMMPS模拟:手把手教你用DeePMD-kit搭建Cr-Si-Fe合金势函数

本文详细介绍了使用DeePMD-kit从VASP数据构建Cr-Si-Fe合金深度势能模型的全流程,包括数据准备、模型训练、优化及LAMMPS集成。通过实战教程,帮助研究者掌握DeePMD-kit训练技巧,实现高精度分子动力学模拟,提升材料计算效率。

weixin_33737134的博客 521

标准数独游戏-深搜解法

题目: 蒜头君今天突然开始还念童年了,想回忆回忆童年。他记得自己小时候,有一个很火的游戏叫做数独。便开始来了一局紧张而又刺激的高阶数独。蒜头君做完发现没有正解,不知道对不对? 不知道聪明的你能否给出一个标准答案? 标准数独是由一个给与了提示数字的 9 \times 99×9 网格组成,我们只需将其空格填上数字,使得每一行,每一列以及每一个 3 \times 33×3 宫都没

渣渣琪的博客 4792

保姆级教程:在Ubuntu 20.04上从源码编译Apollo自动驾驶平台(含GPU环境配置)

本文提供了一份详细的Ubuntu 20.04上从源码编译Apollo自动驾驶平台的保姆级教程,包括GPU环境配置、Docker部署和编译构建等关键步骤。通过实战经验和避坑指南,帮助开发者高效完成Apollo平台的编译和验证,适用于自动驾驶技术研究和应用开发。

weixin_30876945的博客 409

深度优先搜索之数独游戏

1. 问题描述: 你一定听说过“数独”游戏。 如下图所示,玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个同色九宫内的数字均含1-9,不重复。 数独的答案都是唯一的,所以,多个解也称为无解。 本图的数字据说是芬兰数学家花了3个月的时间设计出来的较难的题目。但对会使用计算机编程的你来说,恐怕易如反掌了。 本题的要求就是输入数独题目,程序输出数独的唯一解。我...

二哈 2795

UG NX二次开发(C#)-VS2022配置NX二次开发模板不能正常显示的问题

随着VS2022的发布,使用VS2022进行UG NX二次开发的人员也会越来越多,但是由于VS2022和以前的VS版本采用代码结构不同,而UG NX的二次开发编程模板还没有适应于VS2022的模板配置,所以不能正常的创建一个完整的工程。本文采用曲线救国的方式来实现VS2022下的UG NX二次开发。如果有读者能很好的解决模板配置,不吝赐教。

GimiGimmy 4276

智能硬件产品 App 全球发布 第 1 章:全球 App 发布战略设计

本章阐述智能硬件 App 全球发布战略,涵盖市场分析、竞争格局、用户画像及资源配置。通过制定可执行的全球化推广路径,整合地区法规合规、渠道分发策略与营销活动设计,助力团队快速进入主流商店并确立品牌影响力。同时构建可量化的 KPI 监控体系,指导项目进度追踪与效果复盘,确保产品迭代持续优化,降低运营总成本。

moton2017的博客 156

数独求解(深搜)

import java.util.*; public class SudokuSol { /**待求解数独,输入时,待填框中填0**/ static int[][] Matrix=null; /**对框中数字的标记,ind[i][j]==1,表示数字是固定的,ind[i][j]==0,数字是待填的**/ static int[][] ind=null; /**标记是否找到答案*

独行闹市无人问,青灯剑影响素琴 913

AI穿透式智慧粮仓

本报告基于 2025-2026 年全国多地智慧粮储实践案例,系统分析了 "AI + 穿透式" 智慧粮储体系的技术架构、AI 算法应用、提质增效成效、区域差异化特点及未来发展趋势。该体系通过多模态感知、智能算法与管控平台的深度融合,实现粮食存储全流程精准感知、智能预警与科学调控,显著降低储粮损耗与运营成本,大幅提升储粮安全水平与管理效率。报告梳理了各地差异化实践路径,提出针对性发展建议,为推动我国粮食仓储高质量发展、筑牢国家粮食安全防线提供参考。

reset2021的博客 231

【ybt】【基算 深搜 课过 例3】虫食算

虫食算 题目链接:虫食算 感谢 @lzh@lzh@lzh 大佬的帮助 题目描述 解题思路 很明显这是一道深搜题 (不然它怎么会归到深搜专栏里呢) 。 可以搜索枚举每一个字母来寻找最佳答案。 但这样是 O(10n)O(10^n)O(10n) 的时间复杂度,肯定是过不了的,所以要加入剪枝。 如果当前情况已经不合法了,自然不能搜下去。 那么现在关键在于 check()check()check() 函数。 如果当前位三个数都被搜到过了,那么直接判断即可。但如果上一位有数未知,那么最多还可以对这一位贡献 111

你...你不要过来啊!!! 327

沁恒CH32V30X学习笔记02--GPIO的使用教程及2次封装驱动

刚复位后,GPIO 口运行在初始状态,这时大多数 IO 口都是运行在状态所有的 GPIO 口都可以被配置外部中断输入通道,但一个外部中断输入通道最多只能映射到一个GPIO 引脚上,且外部中断通道的序号必须和 GPIO 端口的位号一致,,两方都是一对一的关系。复用功能。

Car12 706

AI大模型探索之路-实战篇4:深入DB-GPT数据应用开发框架调研

在当今的人工智能时代,大模型技术的迅猛发展为各行各业带来了前所未有的变革。这些大模型,以其强大的语言理解和生成能力,正在逐步成为智能化应用的核心。然而,如何高效地利用这些大模型,构建出满足各种需求的应用,仍然是一个具有挑战性的问题。DB-GPT,作为一个开源的AI原生数据应用开发框架,应运而生,旨在简化大模型应用的开发过程,让构建智能化应用变得触手可及。本文将深入介绍DB-GPT的核心功能、关键特性,并通过实战操作,展示如何利用DB-GPT进行数据应用开发。DB-GPT是一个开源的AI原生数据应用开发框架。

寻道AI,探索AI无限可能! 1万+

【ybt】【基算 深搜 课过 例1】拔河比赛

拔河比赛 题目链接:拔河比赛 题目描述 解题思路 这是一个很简单的深搜。 依题意得每组最多 n2\frac{n}{2}2n​ 个人。 对于每个人无非有选和不选两种情况。 累计选的总和,用全部人的总和去减就得出了另一对的重量。 取绝对值即可。 code #include<iostream> #include<cstdio> #include<cmath> using namespace std; int T; int n,ans,st; int a[30]; vo

你...你不要过来啊!!! 217

Ubuntu 22.04+/WSL2 中解决 `error: externally-managed-environment` 并成功安装 PyTorch + vLLM 的完整指南

Ubuntu 22.04+/WSL2 因遵循 PEP 668 规范,系统 Python 被标记为“外部管理”,导致直接使用 pip install 安装包时报错 externally-managed-environment。解决方案是创建虚拟环境: 通过 python3 -m venv ~/vllm-env 创建隔离环境 激活环境后安装 PyTorch(CUDA 12.1)和 vLLM 避免使用 sudo pip 或 --break-system-packages,防止破坏系统依赖 关键点: 虚拟环

刘一说的IT专栏 296

【ybt】【基算 贪心 课过 例4】国王游戏

国王游戏 题目链接:国王游戏 题目描述 解题思路 我们考虑交换相邻的两个人。 交换前交换前交换前 当前位置 aaa bbb 权值 iii aia_{i}ai​ bib_{i}bi​ a1∗...∗ai−1bi\frac{a_1*...*a_{i-1}}{b{i}}bia1​∗...∗ai−1​​ i+1i+1i+1 ai+1a_{i+1}ai+1​ bi+1b_{i+1}bi+1​ a1∗...∗ai−1∗aibi+1\frac{a_1*...*a_{i-1}*a_i}{b{i+1

你...你不要过来啊!!! 241

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【ybt】【基算 递推 课过 例4】传球游戏

传球游戏 题目链接:传球游戏 解题思路 这道题比较简单。 很明显一个人可以从他的两边获得球,那么也就是可以从两边得到贡献。 则递推式为: fi,j=fi−1,j−1+fi−1,j+1f_{{i},{j}}=f_{{i-1},{j-1}}+f_{{i-1},{j+1}}fi,j​=fi−1,j−1​+fi−1,j+1​ 给 f0,1f_{{0},{1}}f0,1​附 111 的初值,j=nj=nj=n 或 j=0j=0j=0 时特判一下即可。 code #include<iostream> #

你...你不要过来啊!!! 163

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【ybt】【基算 广搜 课过 例1】走迷宫

走迷宫 题目链接:走迷宫 题目描述 解题思路 广搜模板题。 可以用 scanf("scanf("scanf("%1d")1d")1d") 来一位一位输入。 code #include<iostream> #include<cstdio> using namespace std; const int xn[5]={0,0,0,1,-1}; const int yn[5]={0,1,-1,0,0}; int n,sx,sy,tx,ty; int xx[1000000]; int

你...你不要过来啊!!! 191

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【ybt】【基算 贪心 课过 例2】雷达装置

雷达装置 题目链接:雷达装置 题目描述 解题思路 首先,对于每个点来说,在哪个区间里放置雷达可以检测到它是可以求出来的,用勾股定理即可。 然后考虑贪心:如果想要放雷达数量尽量少,那么肯定要在区间的交界处放,因为每个都要放到,所以我们尽量往右放。 我们先以右端点为关键字进行排序,因为这个贪心是建立在右端点单调的基础上的。然后如果当前右端点容不下后面的左端点了,就新开存档,ans++ans++ans++ 即可。 code #include<iostream> #include<cstdio

你...你不要过来啊!!! 228

【ybt】【基算 广搜 课过 例2】山峰和山谷

山峰和山谷 题目链接:山峰和山谷 题目描述 解题思路 广搜模板题。 注意是八连通。 只有低,则山峰 只有高,则山谷 如果周围有高有低,则非山峰也非山谷。 如果没高也没底,则即使山峰又是山谷。 code #include<iostream> #include<cstdio> using namespace std; const int xn[9]={0,0,1,0,-1,1,1,-1,-1}; const int yn[9]={0,1,0,-1,0,1,-1,1,-1}; i

你...你不要过来啊!!! 285

【ybt】【基算 二分 课过 例2】防具布置

防具布置 题目链接:防具布置 题目描述 解题思路 首先,每个点及之前的点一共有多少个防具是可以求出来的, O(n)O(n)O(n)。 然后,因为只有一处防线有问题,所以如果当前点为奇数,那么有问题的防线一定是在它之前的,我们就可以以此为基础进行二分。O(log⁡n)O(\log{n})O(logn)。 当然,如果第 214748364721474836472147483647 道防线是偶数,那么全部的防线都没有问题了。 code #include<iostream> #include&lt

你...你不要过来啊!!! 195

【ybt】【基算 递推 课过 例2】奇怪汉诺塔

奇怪汉诺塔 题目链接:奇怪汉诺塔 题目大意 汉诺塔问题,条件如下: 这里有 A、B、C 和 D 四座塔。 这里有 个圆盘, 的数量是恒定的。 每个圆盘的尺寸都不相同。 所有的圆盘在开始时都堆叠在塔 A 上,且圆盘尺寸从塔顶到塔底逐渐增大。 我们需要将所有的圆盘都从塔 A 转移到塔 D 上。 每次可以移动一个圆盘,当塔为空塔或者塔顶圆盘尺寸大于被移动圆盘时,可将圆盘移至这座塔上。 请你求出将所有圆盘从塔 A 移动到塔 D,所需的最小移动次数是多少 解题思路 显而易见,这是一道四塔的汉诺塔问题。 首先我

你...你不要过来啊!!! 180

【ybt】【基算 递推 课过 例5】平铺方案

平铺方案 题目链接:平铺方案 题目描述 解题思路 首先,设 f(i)f(i)f(i) 表示 iii 格的平铺方案。 它有两种地砖,那意味着它可以放两格的砖或一格的砖来得到贡献。 而两个占一格的砖可以合成为一格两格的砖,则 f(i−2)f(i-2)f(i−2) 有三种情况可以贡献到 f(i)f(i)f(i)。 再考虑竖着放一个一格的砖的情况,则贡献来自 f(i−1)f(i-1)f(i−1)。 但是,这样是不行的。我们发现在我们竖着放一格砖的时候,假如当前情况的前一个砖也是竖着的一格砖,那么就和两个一格砖

你...你不要过来啊!!! 185

【ybt高效进阶1-4-2】【luogu P1784】数独游戏 /数独

就是给你一个数独,要你填完它。

欢迎您的光顾awa 301

【ybt】【基算 广搜 课过 例3】立体推箱子

立体推箱子 题目链接:立体推箱子 题目描述 解题思路 这道题很容易可以想到是广搜。 难点在于如何表示出躺下的情况。 但其实只需要记录两个点中的一个,然后用一个状态变量就可以表示出一整个箱子。 主要是状态的转移不太好推,要有耐心。 其他的和广搜模板就没什么区别了。 code #include<iostream> #include<cstdio> #include<cstring> using namespace std; const int xn[4][5]={{}

你...你不要过来啊!!! 186

【ybt】【基算 递推 课过 例3】数的划分

数的划分 题目链接:数的划分 解题思路 设 fi,jf_{{i},{j}}fi,j​ 表示将 iii 分成 jjj 份的情况数。 显然,当 i=ji=ji=j 时 f(i)(j)f(i)(j)f(i)(j)

你...你不要过来啊!!! 187

【ybt】【基算 贪心 课过 例3】畜栏预定

畜栏预定 题目链接:畜栏预定 题目描述 解题思路 很明显,这是一个贪心。 先进行排序,然后逐个加入。 如果之前已经有畜栏结束使用了,直接加进去就可以了。 如果所有的畜栏都还没有结束使用,那么就新开一个畜栏即可。 code #include<iostream> #include<cstdio> #include<algorithm> using namespace std; int n,tot,ans; int h[50010]; int s[50010]; s

你...你不要过来啊!!! 167

【ybt】【基算 二分 课过 例3】最大均值

最大均值 题目链接:最大均值 题目描述 解题思路 很明显是二分平均值。 这样就用掉了 O(log⁡n)O(\log {n})O(logn) 的时间复杂度,而一般的二分题是 O(nlog⁡n)O(n \log {n})O(nlogn) 的时间复杂度(也可能是我才疏学浅没有遇到过难一点的)。 现在问题就变成了:如何用 O(n)O(n)O(n) 的时间复杂度验证在平均值为 midmidmid 的情况下序列中是否存在一个长度大于 lll 的 ...

你...你不要过来啊!!! 209
上一篇: 【ybt】【基算 深搜 课过 例1】拔河比赛
下一篇: 【ybt】【基算 深搜 课过 例3】虫食算
SSL_GYX
博客等级 码龄7年 103粉丝 297原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值