【刷题】【搜索】新数独

很暴力的搜索,还没有什么剪枝......

心得:

【1】如果只查询和修改,用bool比bitset快

【2】rnt在循环中会比int快

【3】减少简单的函数调用

#include<cstdio>
#include<cstdlib>
#include<bitset>
#include<iostream>
#define rnt register int
using namespace std;
int ans[10][10];
char mp[2][10][10];//0表示左右,1表示上下
bool fx[10][10],fy[10][10],fbl[10][10];

void dfs(int x,int y,int bl)//行,列,方格号
{
    if(bl>9)
    {
        for(rnt i=1;i<=9;i++,printf("\n"))
            for(rnt j=1;j<=9;j++)
                printf("%d ",ans[i][j]);
        exit(0);
    }
    //真实坐标
    int tx=(bl-1)/3*3 +x;
    int ty=(bl-1)%3*3 +y;
    int mn=0,mx=10;
    if(y>1)
        if(mp[0][tx][ty]==‘>‘) mx=min(mx,ans[tx][ty-1]);
        else mn=max(mn,ans[tx][ty-1]);
    if(x>1)
        if(mp[1][tx][ty]==‘v‘) mx=min(mx,ans[tx-1][ty]);
        else mn=max(mn,ans[tx-1][ty]);
    //可选范围
    int nxx=x,nxy=y+1,nxbl=bl;
    if(nxy>3) nxy=1,nxx++;
    if(nxx>3) nxx=1,nxbl++;

    for(rnt nm=mn+1;nm<mx;nm++ )
    {
        if(fx[tx][nm] || fy[ty][nm] || fbl[bl][nm] ) continue;

        ans[tx][ty]=nm;
        fx[tx][nm] = fy[ty][nm] = fbl[bl][nm] =1;
        dfs(nxx,nxy,nxbl);
        fx[tx][nm] = fy[ty][nm] = fbl[bl][nm] =0;
        ans[tx][ty]=0;
    }
}

int main()
{
    for(int i=1;i<=9;i++)
    {
        if(i%3!=1)
        for(int j=1;j<=9;j++)
            cin>>mp[1][i][j];
        for(int k=0;k<3;k++)
            cin>>mp[0][i][k*3+2]>>mp[0][i][k*3+3];
    }

    dfs(1,1,1);
    return 0;
}

原文地址:https://www.cnblogs.com/xwww666666/p/11771724.html

时间: 2024-11-08 05:34:23

【刷题】【搜索】新数独的相关文章

面试刷题26:新冠攻击人类?什么攻击java平台?

可恶的新冠病毒攻击人类,搞得IT就业形势相当不好?好在有钟南山院士带领我们提前开展好了防护工作! java作为基础平台安装在各种移动设备,PC,小型机,分布式服务器集群,各种不同的操作系统上.所以,对java平台层面的攻击也是最多的. 我是李福春,我在准备面试,今天的题目是: Java平台的注入攻击有哪些? 答:攻击需要找到安全漏洞,所谓的安全漏洞是:绕过安全系统限制或者利用程序瑕疵. java平台常见的注入攻击方式如下. 注入攻击 此外还有中间人攻击:即恶意用户在局域网段发送广播,声称自己是服

leecode刷题(9)-- 有效的数独

leecode刷题(9)-- 有效的数独 有效的数独 描述: 判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次. 上图是一个部分填充的有效的数独. 数独部分空格内已填入了数字,空白格用 '.' 表示. 示例 1: 输入: [ ["5","3",".",".&qu

大神刷题表

9月27日 后缀数组:[wikioi3160]最长公共子串 dp:NOIP2001统计单词个数 后缀自动机:[spoj1812]Longest Common Substring II [wikioi3160]最长公共子串 [spoj7258]Lexicographical Substring Search 扫描线+set:[poj2932]Coneology 扫描线+set+树上删边游戏:[FJOI2013]圆形游戏 结论:[bzoj3706][FJ2014集训]反色刷 最小环:[poj1734

bzoj3109 [cqoi2013]新数独

Description Input 输入一共15行,包含一个新数独的实例.第奇数行包含左右方向的符号(<和>),第偶数行包含上下方向的符号(^和v). Output 输出包含9行,每行9个1~9的数字,以单个空格隔开.输入保证解惟一. Sample Input < > > < > < v v ^ ^ v v ^ ^ ^< < > < > < ^ ^ ^ v ^ ^ ^ v v< < < < >

7、8月刷题总结

准备开学了囧,7.8月刷题记录,以后好来复习,并且还要好好总结! 数据结构: splay: [BZOJ]1503: [NOI2004]郁闷的出纳员(Splay) [BZOJ]1269: [AHOI2006]文本编辑器editor(Splay) [BZOJ]1507: [NOI2003]Editor(Splay) treap: [BZOJ]1862: [Zjoi2006]GameZ游戏排名系统 & 1056: [HAOI2008]排名系统(treap+非常小心) [BZOJ]3224: Tyvj

17年 5月份刷题版

最近才开始做这个刷题版,之前的一些实在是记不起来什么时候写的了,稍微总结一下20号之前的吧. 怎么说呢,先吐槽一下吧,520在家愉快的陪着代码和计蒜客度过了温馨而又愉快的520(计蒜客给我发的短信是这样说的QAQ). 五月份总觉得自己没有学什么新的东西,15号左右学了一下二分图,写了三道题p1321,p1322,p1323,然后在开始学的网络流,然后到现在还在学QAQ(肯定没有尧神学的快啦). 在往前说就是往前翻了一下第二页的题,发现好多模板题和搜索的题都没有写,所以补了一下,不得不说,体验了一

雅虎刷题狂人曹鹏:10年理论与实践结合的程序员之路

曹鹏,2006年浙江大学计算机科学专业毕业,2013年中国科学院计算机技术研究所博士毕业.博士期间研究方向为社交网络与社会计算,曾经做过搜索.话题发现.社交网络方面.推荐算法等领域的相关研究. 曾为浙江大学.浙江省大学生程序设计竞赛的命题人,是hackerrank.com.hackerearth.com和csdn英雄会.CSDN高校编程挑战的命题人,也是PAT(Programming Ability Test, http://pat.zju.edu.cn/) 的命题人.是国内ZOJ(http:/

在vscode中配置LeetCode插件,从此愉快地刷题

大家好,今早在B站看到up主的vscode里藏了leetcode插件,这才知道原来还有这款神器.但是没想到在用的时候遇到了一些麻烦,花了一点时间才解决.所以写这篇文章除了给大家安利这个好用的插件之外,也是为了帮助更多的同学避免踩坑. 简介vscode vscode在工业界鼎鼎大名,被誉为微软少有的拿得出手的精品(逃).原本是不想过多赘述的,但是鉴于许多粉丝还是正在上学的萌新,所以花点笔墨简单介绍一下. vscode是微软开发的编辑器,严格说起来它并不是一个IDE,只是一个编辑器.但是由于它支持嵌

用js刷题的一些坑

leecode可以用js刷题了,我大js越来越被认可了是吧.但是刷题中会因为忽略js的一些特性掉入坑里.我这里总结一下我掉过的坑. 坑1:js中数组对象是引用对象 js中除了object还有数组对象也是引用对象,这点常常被忽视,所以在递归的时候传递数组要用arr.slice(0)这样复制一个一样的新数组,不然会出现你传入的数组会被同级的递归改变,结果就不对了. 所以只要数组复制的地方最好都要这么写,除非你真的想引用.而且注意是slice不是splice这两个方法差别很大,你如果用splice(0

半个暑假的刷题有感

这半个多月一来,主要是在刷DP.开始是一些简单的DP(可是我没有感觉有多简单=_=!!),然后是最大连续子序列,最大公共子序列,最大子矩阵等等,这些题目还好,有的题目甚至可以模板化. 还有一些没有解决的难题: 1024 Max Sum Plus Plus 最大m段不重叠子段和](可不连续)1244 Max Sum Plus Plus Plus [最大m段不重叠子段和](连续) 1074 Doing Homework [压缩dp](这个题整个程序都在用位运算,让我这个小白情何以堪啊) 还有记忆化搜