计蒜客 蓝桥模拟 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点伤害,等 ...
随机推荐
- @清晰掉 swap函数
swap函数估计是一个各种各样程序都会频繁用到的子程序,可是你知道它究竟有多少种不同的写法吗?下面我就列举我知道的几种swap函数来跟大家分享一下. (1)经典型---嫁衣法 无论是写程序还是干其他事 ...
- 微信小程序 API 路由
路由:由于页面的跳转: wx.switchTab() 跳转到 tabBar 页面,并关闭掉其他所有非 tabBar 页面: 参数:为对象, 对象的属性: url:需要跳转的 tabBar 的页面路径( ...
- Python 使用PyQt5进行开发(一)
Qt 是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架.它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器. 我们先简单使用Qt进行一个小工 ...
- springboot 使用外置tomcat启动
pom.xml 如下 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...
- 阶段3 1.Mybatis_12.Mybatis注解开发_6 mybatis注解开发一对一的查询配置
新建Account实体类 生成getter和setter还有toString方法 先创建dao类 全局的配置,这里要改成package 创建多对一的关系 在查询的时候输出user这个对象的内容 建立查 ...
- Win8.1+VS2013+WDK8.1+VirtualBox or VMware 驱动开发环境配置
https://blog.csdn.net/charlessimonyi/article/details/50904956 Win8.1+VS2013+WDK8.1+VirtualBox or VMw ...
- 中国MOOC_零基础学Java语言_第5周 数组_1多项式加法
第5周编程题 查看帮助 返回 第5周编程题 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截 ...
- Delphi IDE使用的一些主要技巧
Delphi IDE使用的一些主要技巧 1.查找和替换 (1)<ctrl>+F[1]:选择页“Find”,进行查找,则根据查找方向继续查找.选择页“Findin Files”,则进行该工程 ...
- Debian或者Ubuntu中安装secureCRT/secureFX
1.官网下载 ubuntu 下的 xx.deb安装包.此处使用的安装包是scrt-sfx-8.5.4-1942.ubuntu16-64.x86_64.deb,点击下载,提取码:5em3. 2.安装 d ...
- 理解ES6中的Iterator
一.为什么使用Iterator 我们知道,在ES6中新增了很多的特性,包括Map,Set等新的数据结构,算上数组和对象已经有四种数据集合了,就像数组可以使用forEach,对象可以使用for...in ...