【01游戏——DFS】

server/2025/2/28 12:51:22/

题目

代码

#include <bits/stdc++.h>
using namespace std;const int N = 11;int n;
char g[N][N];
char ng[N][N];
bool Find = false;bool check(int x, int y) //只用查最新的坐标相关的数据
{//连续长度不能超过2if(x - 2 >= 1 && ng[x][y] == ng[x-1][y] && ng[x-1][y] == ng[x-2][y]) return false;if(y - 2 >= 1 && ng[x][y] == ng[x][y-1] && ng[x][y-1] == ng[x][y-2]) return false;//数量各一半 && 不能相同if(x == n){int cnt = 0;for(int i = n; i; i--)if(ng[i][y] == '1')cnt++;if(cnt != n / 2) return false;for(int j = y-1; j; j--){int k = 1;for(; k <= n; k++)if(ng[k][j] != ng[k][y]) break;if(k > n) return false;}}if(y == n){int cnt = 0;for(int j = n; j; j--)if(ng[x][j] == '1')cnt++;if(cnt != n / 2) return false;for(int i = x-1; i; i--){int k = 1;for(; k <= n; k++)if(ng[i][k] != ng[x][k]) break;if(k > n) return false;}}return true;
}
void print()
{for(int i = 1; i <= n; i++){for(int j = 1; j <= n; j++)cout << ng[i][j];cout << '\n';}
}
void dfs(int x, int y)
{if(Find) return; //找到唯一解,结束if(y > n) {x++, y = 1;} //合法化坐标if(x > n) //结束搜索,立马输出{Find = true;print();return;}if(g[x][y] == '_'){ng[x][y] = '0';if(check(x, y))dfs(x, y+1);ng[x][y] = '1';if(check(x, y))dfs(x, y+1);}else{ng[x][y] = g[x][y];if(check(x, y))dfs(x, y+1);}
}
int main()
{ios::sync_with_stdio(0); cin.tie(0);cin >> n;for(int i = 1; i <= n; i++)for(int j = 1; j <= n; j++)cin >> g[i][j];dfs(1, 1);
}


http://www.ppmy.cn/server/171294.html

相关文章

react native和react、H5的区别

React Native、React 和 H5 是三种不同的技术栈&#xff0c;它们之间有很多相似之处&#xff0c;但也有很多关键的区别。下面是它们的主要区别&#xff1a; 1. React • 定义&#xff1a;React 是一个用于构建用户界面的 JavaScript 库&#xff0c;专注于构建 UI 组件。它允许…

OSI七层模型和TCP/IP四层模型形象实例

本章是对上一章《OSI七层模型和TCP/IP四层模型介绍》内容的形象实例说明&#xff0c;应该可以帮助记忆。 目录 1、OSI七层模型实例 1.1、应用层&#xff08;Application Layer&#xff09; 1.2、表示层&#xff08;Presentation Layer&#xff09; 1.3、会话层&#xff08…

python里面的numpy

NumPy&#xff08;Numerical Python&#xff09;是 Python 中用于科学计算的基础库&#xff0c;它提供了高性能的多维数组对象&#xff08;ndarray&#xff09;以及处理这些数组的各种工具。以下是对 NumPy 常见用法的详细讲解&#xff1a; 1. 安装与导入 在使用 NumPy 之前&…

C++性能优化常用技巧

一. 选择合适的数据结构 1.1 map与unordered_map的选择 如果仅仅只需要使用到快速查找的特性&#xff0c;那么unordered_map更加合适&#xff0c;他的复杂度是O(1)。如果还需要排序以及范围查找的能力&#xff0c;那么就选择map。 1.2 vector与list的选择 通常情况下&#…

常用的 Web API

1. Intersection API Interserction API 是一种用于异步检测模板元素月视口&#xff08;或者指定父元素&#xff09;交叉状态变化的浏览器原生接口&#xff0c;主要那个用于解决传统滚动监听性能差、实现复杂的问题&#xff0c;适用于懒加载、慢点曝光、无线滚动等场景。 2. …

游戏引擎学习第122天

仓库:https://gitee.com/mrxiao_com/2d_game_3 讨论了多线程&#xff08;Multithreading&#xff09; 今天开始讨论的话题对大家来说不太好&#xff0c;因为这是一个相对棘手的技术问题&#xff0c;虽然它很重要。这个话题不像优化那样是通过解决一个问题并进一步精细化来变得…

SpringBoot 整合mongoDB并自定义连接池,实现多数据源配置

要想在同一个springboot项目中使用多个数据源&#xff0c;最主要是每个数据源都有自己的mongoTemplate和MongoDbFactory。mongoTemplate和MongoDbFactory是负责对数据源进行交互的并管理链接的。 spring提供了一个注解EnableMongoRepositories 用来注释在某些路径下的MongoRepo…

excel单、双字节字符转换函数(中英文输入法符号转换)

在Excel中通常使用函数WIDECHAR和ASC来实现单、双字节字符之间的转换。其中 WIDECHAR函数将所有的字符转换为双字节&#xff0c;ASC函数将所有的字符转换为单字节 首先来解释一下单双字节的含义。单字节一般对应英文输入法的输入&#xff0c;如英文字母&#xff0c;英文输入法…