5547

news/2025/1/24 22:52:37/
题意就是做一个4*4的数独,之前做过9*9的,没什么取巧的,也就是用深搜

比较不一样的是,这道题在有多组解得时候要把解都输出,要用到回溯法

时间还是有点长的,勉强过了吧

#include #include #include #include using namespace std;
const int N=8;
int mp[N][N];
bool solve(int val ,int pel, int x)
{
bool flag[5];
memset(flag,false,sizeof(flag));
for(int i=0 ;i<4; ++i)
{
if(mp[val][i]!=-1)
flag[ mp[val][i] ] = true;
if(mp[i][pel]!=-1)
flag[ mp[i][pel] ] = true;
}
int va = val /2,pe = pel / 2;
for(int i = va*2; i<=va*2+1; ++i)
{
for(int j=pe*2; j<=pe*2+1; ++j)
{
if(mp[i][j]!=-1)
flag[ mp[i][j] ] = true;
}
}
if(flag[ x ] == false)
return true;
return false;
}
void print()
{
for(int i=0;i<4;++i)
{
for(int j=0;j<4;++j)
printf("%d",mp[i][j]);
puts("");
}
}
void dfs(int cal, int pel)
{
if(cal==4 && pel == 0)
{
print();return ;
}
int cal_next = cal,pel_next = pel;
if(pel==3)
++cal_next,pel_next = 0;
else
++pel_next;
if(mp[cal][pel] == -1)
{
for(int i=1;i<=4;++i)
{
if(solve(cal,pel,i)){
mp[cal][pel] = i;
dfs(cal_next, pel_next);
}
}
mp[cal][pel] = -1;
}
else
dfs(cal_next,pel_next);
}
int main()
{
int T;
scanf("%d",&T);
for(int cas = 1; cas <=T; ++cas)
{
string s[5];
for(int i=0;i<4;++i)
cin>>s[i];
for(int i=0; i<4; ++i)
{
for(int j=0; j<4; ++j)
{
char c = s[i][j];
if(c!='*')
mp[i][j] = (c-'0');
else
mp[i][j] = -1;
}
}
printf("Case #%d:\n",cas);
dfs(0,0);
}
return 0;
}


http://www.ppmy.cn/news/144875.html

相关文章

RDM6300 125KHz ID卡读卡器

RDM6300 RDM6300是一个针对125KHz ID卡的读卡模块, 用于读取EM4100兼容ID卡信息, 由一片C8051F330和一片LM358D双运放组成 注: EM4100, 4200卡是只读的, 复制卡, 是把T5577/5557/5567/EM4305卡设置成EM4100格式的ID卡 Pin definition 第一组 5 pin, 方脚(靠外)是PIN1 串口波特率…

TCL软件测试笔试题-精品

最近去了TCL国际e城面试。 面试题分为五个部分。分别是软件测试理论、一篇关于TV开关机测试的英语阅读等&#xff0c;最后是python编程题。 五、编程试题&#xff08;Python&#xff09; 1、请给出以下代码的输出结果&#xff1a; print("this is"3) print(&quo…

5656

FMPP的简单教程http://pipe.iteye.com/blog/185276 freemarker要熟悉一下list以及map的遍历http://echowhere.blog.sohu.com/40872593.html

go pprof 及 trace 完整操作指南 GC或性能分析 (windows平台linux平台皆可)

pprof 和 trace 这东西可以分析GC具体的瓶颈位置&#xff01;&#xff01;以及每一个线程具体什么时候运行的&#xff01;&#xff01;反正各种好处&#xff01; 之前网上 大家各种抄袭&#xff0c;复制&#xff0c;我相信没有几个人真正玩过这玩意儿&#xff0c;因为项目需要…

netstat命令详解

引言 netsta命令是一个监控TCP/IP网络非常有用的工具,它可以侠士路由表&#xff0c;实际网络连接以及每一个网络接口设备的状态信息。 语法选项 netstat [选项] -a或--all&#xff1a;显示所有连线中的Socket&#xff1b; -A<网络类型>或--<网络类型>&#xf…

2021-10-28 工作记录--fastAdmin-一张图细化FastAdmin中的表格列表的部分功能

fastAdmin 可参考的优秀文章&#xff08;去fastAdmin问答社区上也可以看到&#xff09;【堪称yyds】&#xff1a; 1、https://ask.fastadmin.net/article/5567.html 2、https://ask.fastadmin.net/article/323.html 下面内容在上面两篇文章中均有所描述&#xff0c;但不是直接…

数据脱敏,你会了吗(二)

数据脱敏 – 正则表达式 上节的内容我们说到了使用工具类对要出输出的数据进行掩码处理以达到保护数据的目的&#xff0c;上面的方法在一些简单场景都好使用&#xff0c;但是遇到类似最后提出的json字符串处理起来就 力有不逮 了。这时就需要用到一种新的字符串处理技术 – 没…

PL/SQL链接配置数据库

下载instantclient&#xff0c;下载完后是一个压缩文件&#xff0c;不需要安装&#xff0c;配置一下就可以 解压文件到准备放置的目录&#xff0c;我这里选择了D盘的Oracle目录&#xff0c;路径是D:\Oracle_instantclient_11_2 在系统环境变量中配置Path&#xff0c;添加insta…