计蒜客 蓝桥模拟 F. 结果填空:数独



代码:
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <iomanip>
using namespace std;
int n;
int f[][];///记录每个位置的值 -1表示需要填
int check(int x,int y,int k) {
for(int i = ;i < ;i ++) {
if(i != x && f[i][y] == k)return ;
if(i != y && f[x][i] == k)return ;
}
int xx,yy;
for(int i = ;i < ;i ++) {
xx = x / * + i;
for(int j = ;j < ;j ++) {
yy = y / * + j;
if(!(xx == x && yy == y) && f[xx][yy] == k)return ;
}
}
return ;
}
void dfs(int x,int y) {//x代表行,y代表列,分别从0-8共9行(列)
if(x == ) {///x范围已过已经把表格填了一遍了 输出结果并返回
for(int i = ;i < ;i ++) {
for(int j = ;j < ;j ++) {
cout<<f[i][j]<<' ';
}
cout<<endl;
}
system("pause");
return;
}
int xx = x,yy = y;
f[x][y] = ;///如果保持-1 下面循环不会进行 循环后会恢复为-1
while(f[xx][yy] != -) {
if(xx >= )break;
xx = xx + (yy + ) / ,yy = (yy + ) % ;///每循环一次yy+1,也就是从当前(x,y)的位置往右一行一行的遍历 找到下一个需要填的位置
}
f[x][y] = -;
for(int i = ;i <= ;i ++) {
if(check(x,y,i)) {//当前填i可行的话 就dfs下一个需要填的位置(xx,yy)
f[x][y] = i;
dfs(xx,yy);
f[x][y] = -;//dfs终止表示这种策略不能dfs下去 位置值恢复为-1
}
}
}
int main() {
memset(f,-,sizeof(f));
f[][] = ;
f[][] = ;
f[][] = ;
f[][] = ;
f[][] = ;
f[][] = ;
f[][] = ;
f[][] = ;
f[][] = ;
f[][] = ;
f[][] = ;
f[][] = ;
f[][] = ;
f[][] = ;
f[][] = ;
f[][] = ;
f[][] = ;
f[][] = ;
f[][] = ;
f[][] = ;
f[][] = ;
f[][] = ;
f[][] = ;
f[][] = ;
for(int i = ;i < ;i ++) {
for(int j = ;j < ;j ++) {
if(f[i][j] == -)cout<<'*'<<' ';
else cout<<f[i][j]<<' ';
}
cout<<endl;
}
getchar();
dfs(,);
}
计蒜客 蓝桥模拟 F. 结果填空:数独的更多相关文章
- 计蒜客 蓝桥模拟 A. 结果填空:矩阵求和
给你一个从 n×nn \times nn×n 的矩阵,里面填充 111 到 n×nn \times nn×n .例如当 nnn 等于 333 的时候,填充的矩阵如下. 1 1 2 3 2 4 5 ...
- 计蒜客 蓝桥模拟 B.素数个数
用 0,1,2,3⋯70,1,2,3 \cdots 70,1,2,3⋯7 这 888 个数组成的所有整数中,质数有多少个(每个数字必须用到且只能用一次). 提示:以 000 开始的数字是非法数字. 代 ...
- 计蒜客 蓝桥模拟 I. 天上的星星
计算二维前缀和,节省时间.容斥定理. 代码: #include <cstdio> #include <cstdlib> #include <cstring> #in ...
- 计蒜客 蓝桥模拟 H. 封印之门
Floyd算法,最短路,判断a,b是否相等. 代码: #include <cstdio> #include <cstdlib> #include <cstring> ...
- 计蒜客 蓝桥模拟 G. 数列求值
递归式移项得Ai+1 = 2Ai + 2Ci - Ai-1; 1.A2 = 2A1 + 2C1 - A0; 2.A3 = 2A2 + 2C2 - A1; . . . n.An+1 = 2An + 2C ...
- 计蒜客蓝桥杯模拟赛 后缀字符串:STL_map+贪心
问题描述 一天蒜头君得到 n 个字符串 si,每个字符串的长度都不超过 10. 蒜头君在想,在这 n 个字符串中,以 si 为后缀的字符串有多少个呢? 输入格式 第一行输入一个整数 n. 接下来 ...
- 计蒜客蓝桥杯模拟赛五J. 程序设计:放置守卫
在一张 n 行 m 列的方格地图上放置一些守卫,每个守卫能守护上.左.右三个方向上相邻的方格和自己所在的方格.如下图,红色的方格放置守卫,绿色的方格为该守卫守护的区域. 现在要求在地图上放置若干个守卫 ...
- 计蒜客 蓝桥杯模拟 瞬间移动 dp
在一个 n \times mn×m 中的方格中,每个格子上都有一个分数,现在蒜头君从 (1,1)(1,1) 的格子开始往 (n, m)(n,m) 的格子走.要求从 (x_1,y_1)(x1,y1 ...
- 计蒜客 NOIP模拟赛(3) D1T1火山喷发
火山喷发对所有附近的生物具有毁灭性的影响.在本题中,我们希望用数值来模拟这一过程. 在环境里有 nnn 个生物分别具有 A1,A2,⋯,An点生命值,一次火山喷发总计 M轮,每轮造成 1点伤害,等 ...
随机推荐
- legend3---2、网站的代码里面的/也是代表根目录
legend3---2.网站的代码里面的/也是代表根目录 一.总结 一句话总结: 不过这个根目录在public下面 1.mysql删除数据库命令? drop database <数据库名> ...
- object Object {} any unknown
object: 除了primitive(boolean null number string undefined bigint symbol)的类型 Object: Object和any很像 ,Obj ...
- 安装golang web框架 gin
gin 地址https://github.com/gin-gonic/gin#installation 去gin 地址 clone 下来,放到对应的包中即可.如:gin就放在项目文件夹/github. ...
- laravel 5.6 使用RabbitMQ作为消息中间件
1.Composer安装laravel-queue-rabbitmqcomposer require vladimir-yuldashev/laravel-queue-rabbitmq2.在confi ...
- numpy2
1.通用函数,是一种在ndarray数据中进行逐元素操作的函数.某些函数接受一个或多个标量数值,并产生一个或多个标量结果,通用函数就是对这些函数的封装. 1.常用的一元通用函数有:abs\fabs s ...
- database 学习
ref : 什么是NoSQL,为什么要使用NoSQL?
- python 并发编程 多进程 Process对象的其他属性方法 join 方法
一 Process对象的join方法 在主进程运行过程中如果想并发地执行其他的任务,我们可以开启子进程,此时主进程的任务与子进程的任务分两种情况 情况一: 在主进程的任务与子进程的任务彼此独立的情况下 ...
- LINUX “软链接”和“硬链接”的区别
今天在知乎上看到一篇十分有趣的问题: 如何评价微软高级工程师痴迷于soft link这一linux常见概念? 虽然又是知名撕逼王曾某的撕逼帖,但是我还是想就题目中链接的问题简单地讲讲. 什么是链接? ...
- 关于android工具链
1 android sdk platform tools 同android platform交互的工具,包括adb.fastboot和systrace. 2 sdk build tools 用于bui ...
- vue+express利用token 完成前后端登录
token是后端给前端的一个二维码, 这个二维码一般是暗码, 前端拿着这个二维码到后端, 后端便可以通过这个二维码得知用户是否登录过, 用户是谁等信息(具体什么信息,是后端在返回token时候设置的 ...