P1092 虫食算
题目传送:https://www.luogu.org/problem/show?pid=1092
#include <iostream> #include <cstring> #include <cstdlib> #include <cstdio> #include <cmath> #define maxn 30 int n,flag[maxn]; ][maxn]; bool use[maxn]; int id(char ch)//将字符串转换为数字 { ; } void dfs(int x,int y,int t)//x代表列,y代表行,t代表进位 { ) //从上到下,从右到左,x==0表示搜到了最后一列 { )//最后一列不能有进位,如果进了以为则第三个字符串会比其他两个字符串长一位 { ;i<n;i++) //如果满足条件,就输出 printf("%d ",flag[i]);//输出 printf("%d\n",flag[n]);//输出 exit(); //相当于return 0;程序结束 } return;//返回 } ;i>=;i--) //剪枝1 { ][i])];//w1表示第一行字符串代表的数字 ][i])];//w2表示第二行字符串代表的数字 ][i])];//w3表示第三行字符串代表的数字 ||w2==-||w3==-) //如果这个位置上还没被赋值,就返回 continue; )%n!=w3) return; //如果无论进位与否,都不能整除对应的w3就说明字符串不匹配,直接return ; } ) ////如果这个位置上还没被赋值,就进行赋值操作 { ;i>=;i--) //倒着枚举更快 if (!use[i]) //如果这个数没有用过 { ) //且不是最后一行 { flag[id(s[y][x])]=i;//就将这个位置赋上值 use[i]=;//标记这个数用过 dfs(x,y+,t);//继续搜索下一行 flag[id(s[y][x])]=-;//还原 use[i]=;//还原 } else //当y==3时 { ][x])]+flag[id(s[][x])]+t;//两个数加上它们的进位 if (w%n!=i) continue; use[i]=;flag[id(s[][x])]=i;//赋值,标记这个数用过 dfs(x-,,w/n);//搜索下一列,进位需要改变 use[i]=;flag[id(s[][x])]=-;//还原 } } } else //如果这个位置上已经被赋值了 { ) //继续搜索 dfs(x,y+,t); else { ][x])]+flag[id(s[][x])]+t; ][x])]) //剪枝 2 return; dfs(x-,,w/n);//搜索下一列,进位需要改变 } } } int main() { scanf("%d",&n);//读入n,代表n进制等...... ;i<=;i++) scanf();//读入3行字符串 memset(flag,-,sizeof(flag));//将所有位置标记为未赋值 dfs(n,,);//从右往左,上往下搜索,所有从第n列,第1行开始 ;//结束 }
P1092 虫食算的更多相关文章
- 洛谷P1092 虫食算
P1092 虫食算 题目描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单的例子: http://paste.ubuntu.com/2544 ...
- 【题解】 P1092虫食算
[题解]P1092 虫食算 老题了,很经典. 用到了一些搜索套路. 可行性剪枝,劣者靠后,随机化,\(etc......\) 搜索设参也很有技巧,设一个\(adjustment\)参数可以很方便地在两 ...
- Luogu P1092 虫食算(枚举+剪枝)
P1092 虫食算 题面 题目描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单的例子: 43#9865#045 + 8468#6633 4 ...
- P1092 虫食算 题解(搜索)
题目链接 P1092 虫食算 解题思路 好题啊!这个搜索好难写...... 大概是要考虑进位和考虑使用过某个数字这两个东西,但就很容易出错...... 首先这个从后往前搜比较好想,按照从后往前出现的顺 ...
- 洛谷 P1092 虫食算 Label:dfs
题目描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单的例子: 43#9865#045 +8468#6633 44445509678 其中# ...
- Luogu P1092 虫食算
题目描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单的例子: 43#9865#045 +8468#6633 44445509678 其中# ...
- [NOIP2004] 提高组 洛谷P1092 虫食算
题目描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单的例子: 43#9865#045 +8468#6633 44445509678 其中# ...
- 洛谷—— P1092 虫食算
https://www.luogu.org/problem/show?pid=1092 题目描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简 ...
- 【搜索】$P1092$虫食算
题目链接 首先,我们只考虑加法的虫食算.这里的加法是N进制加法,算式中三个数都有N位,允许有前导的0. 其次,虫子把所有的数都啃光了,我们只知道哪些数字是相同的,我们将相同的数字用相同的字母表示,不同 ...
- P1092 虫食算(洛谷)
今天做了一道题,我之前吹牛的时候曾经说:“这个题我觉得深搜剪枝一下就可以了.”. 我觉得我之前说的没错“这个题深搜剪枝亿下,再加点玄学就可以了!” 题目描述 所谓虫食算,就是原先的算式中有一部分被虫子 ...
随机推荐
- Java基础总结--流程控制
Java流程控制* 顺序结构--最常见的执行情况,语句按照出现的先后次序依次执行.* 判断结构--对条件进行判断,执行相应的语句.有三种常见的形式< if(判断条件){语句;}--为真执行语句, ...
- app.get is not a function解决方案
在express4.x中app.js被申明为一个模块,而不是一个主程序入口,在文件的最后暴露出了这个模块,如下所示 app.js module.exports = app; 但是我们在routes目录 ...
- Hadoop,master和slave简单的分布式搭建
搭建过程中配置免密钥登录为了以后方便使用 [提醒]安装Hadoop中会遇到新建文件夹,配置路径等问题,这个不能生搬硬套,要使用自己配置的路径,灵活使用. Hadoop的部署配置文件在http://bl ...
- 开发一个基于 Android系统车载智能APP
很久之前就想做一个车载相关的app.需要实现如下功能: (1)每0.2秒更新一次当前车辆的最新速度值. (2)可控制性记录行驶里程. (3)不连接网络情况下获取当前车辆位置.如(北京市X区X路X号) ...
- ⒂bootstrap组件 折叠 基础案例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- HTML学习笔记 CSS文本及字体及连接及列表(a标签使用及缩进) 案例 第七节 (原创)参考使用表
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- mkdir--命令
mkdir命令 mkdir:make directory(ies)的缩写,用来创建目录 1.语法 mkdir [OPTION]... DIRECTORY 注释:option是选择,可选,directo ...
- Python连接Oracle数据库
今天使用Python连接数据库,连接没有问题,就是中文显示乱码,网上找了很多解决方案, 最后选择使用这个 #!/usr/bin/env python # -*- coding:utf-8 -*- #A ...
- 身为运维的你,怎么掌握python才不会失业
以前,我们都说Python是运维工程师的未来:现在,为什么大家都说不会Python的运维都将失业?运维必须懂开发,特别是python开发,已经形成大家的共识,不懂开发的运维,路会越走越窄. 而现在的情 ...
- 二:SQL映射文件
二:SQL映射文件 1.SQL映射文件: (1)mapper:映射文件的根元素节点,只有一个属性namespace(命名空间) 作用:用于区分不同的mapper全局唯一 绑定dao接口即面向接口编程, ...