计蒜客 蓝桥模拟 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点伤害,等 ...
随机推荐
- 启动webpack-dev-server错误,ERROR in main.js from UglifyJs Unexpected token: name «element», expected: punc «;»
启动webpack-dev-server出现以下错误 ERROR in main.js from UglifyJsUnexpected token: name «element», expected: ...
- VLC for Android编译
编译环境是ubuntu 64bit 全程参考https://wiki.videolan.org/AndroidCompile/ 一:环境准备 1.安装系统 尽量使用最新的ubuntu系统 可以省去很多 ...
- leetcode-mid-sorting and searching-75. Sort Colors-NO
mycode 97.95% class Solution(object): def sortColors(self, nums): """ :type nums: L ...
- C语言:结构体中(.)和(->)的区别
https://blog.csdn.net/faihung/article/details/79190039 这虽然是个小问题,但有时候很容易让人迷惑,因为有的时候用混淆了,程序编译不通过. 下面说说 ...
- java数字加密算法
数字加密在项目中时常会遇到,如手机号,身份证号信息等,下面小白将自己手写的数字加密算法分享给大家,可在项目中直接运用.加密规则,入参时传递一个字段时间戳 time:* 1.以字母代替数字,0-9分别为 ...
- UnityEventSystem
能够处理各种UI事件: IPointerEnterHandler:当指针进入 void OnPointerEnter(PointerEventData eventData); IPointerExit ...
- Call to undefined method app\models\User::find() yii2-admin
这个问题可能大家遇到的不多. 分析原因 问题出在 config/web.php 这个配置文件里面 'components' => [ ..... 'user' => [ 'identity ...
- 【BW系列】SAP BW实时抽取ECC数据的实现
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[BW系列]SAP BW实时抽取ECC数据的实现 ...
- CentOS安装部署sha##dow**socks
注意事项,pip版本不能太低,实测9.0.3可行(需要python 2.7,低版本python升级办法另有文章介绍). pip --version 以shadowsocks-2.8.2为例: pip ...
- vue插槽用法(极客时间Vue视频笔记)
vue插槽 插槽是用来传递复杂的内容,类似方法 <!DOCTYPE html> <html lang="en"> <head> <meta ...