小 M 的算式(dfs)
【问题描述】
小 M 在做数学作业的时候遇到了一个有趣的问题:有一个长度为 n 的数字
串 S,小 M 需要在数字之间填入若干个“+”和恰好一个“=”,使其成为一个
合法的等式。如对于 S=“2349”,可以通过添加 2个“+”和 1 个“=”成为
“2+3+4=9”。
小 M 发现有些数字串是无法通过添加符号成为一个合法的等式的,她想知
道对于每一个给定的数字串 S,是否可以通过添加符号使之成为一个合法的等
式(允许前导 0)?
【输入】
第一行为数据组数 T,表示有 T组输入数据。
接下来 T行每行一个数字串 S。
【输出】
对于每组数据,若 S可以成为合法的等式,输出“Yes”,否则输出
“No”,以单行回车隔开。
【输入输出样例】
4
2349
233233
122323
2344322322
Yes
Yes
No
Yes
【输入输出样例解释】
2+3+4=9
233=233
2+34=4+3+2+2+3+22
【数据范围】
对于 50%的数据:1 ≤ T ≤ 3,1 ≤ n ≤ 4。
对于 100%的数据:1 ≤ T ≤ 5,1 ≤ n ≤ 10。
本题纯正dfs,代码并不是很难。
用状态压缩更优,但直接dfs也能过。
#include<cstdio>
#include<cstring>
#include<cctype>
#include<algorithm>
using namespace std;
#define rep(i,s,t) for(int i=s;i<=t;i++)
#define dwn(i,s,t) for(int i=s;i>=t;i--)
#define mp make_pair
#define pb push_back
#define xx first
#define yy second
typedef long long ll;
typedef pair<int,int> pii;
inline int read() {
int x=,f=;char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=-;
for(;isdigit(c);c=getchar()) x=x*+c-'';
return x*f;
}
const int maxn=;
char s[maxn];
int n;
int solve() {
scanf("%s",s+);
n=strlen(s+);
rep(x,,n-) {
rep(S,,(<<n-)-) {
int left=,cur=,right=;
rep(i,,x) {
cur=cur*+s[i]-'';
if(S>>i-&) left+=cur,cur=;
}
left+=cur;cur=;
rep(i,x+,n) {
cur=cur*+s[i]-'';
if(S>>i-&) right+=cur,cur=;
}
right+=cur;cur=;
if(left==right) return ; }
}
return ;
}
int main() {
freopen("equation.in","r",stdin);
freopen("equation.out","w",stdout);
int T=read();
while(T--) puts(solve()?"Yes":"No");
return ;
}
小 M 的算式(dfs)的更多相关文章
- 小木棒HDU1455(DFS+剪枝)
题意:HDU1455 给出n个小木棒的长度,他们是又数根长度相同的木棒剪短得来的,问没剪短之前的木棒长度最短是多少. 思路: 见代码:https://www.cnblogs.com/fqfzs/p/9 ...
- Java 第十一届 蓝桥杯 省模拟赛 小明植树(DFS)
小明植树 题目 问题描述 小明和朋友们一起去郊外植树,他们带了一些在自己实验室精心研究出的小树苗. 小明和朋友们一共有 n 个人,他们经过精心挑选,在一块空地上每个人挑选了一个适合植树的位置,总共 n ...
- 【CQOI2017】【BZOJ4813】小Q的棋盘 DFS
题目描述 有一棵树,你要从\(0\)号点开始走,你可以走\(m\)步,问你最多能经过多少个不同的点. \(n\leq 100\) 题解 出题人的做法是DP(一个简单的树形DP),但是可以直接通过一次D ...
- poj The Settlers of Catan( 求图中的最长路 小数据量 暴力dfs搜索(递归回溯))
The Settlers of Catan Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1123 Accepted: ...
- HDU_1010——小狗走迷宫DFS
Problem Description The doggie found a bone in an ancient maze, which fascinated him a lot. However, ...
- CSUOJ 1973 给自己出题的小X DFS
Description 小X学习了dfs,为了练习搜索,开始给自己出题玩. 玩着玩着,一会把自己难住了,一会又被自己难倒了,真是有趣诶! 小X出的题: 现在有N个不同的正整数,求它们可以组成多少个这样 ...
- 【POJ】3009 Curling 2.0 ——DFS
Curling 2.0 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11432 Accepted: 4831 Desc ...
- scauoj 18025 小明的密码 数位DP
18025 小明的密码 时间限制:4000MS 内存限制:65535K提交次数:0 通过次数:0 题型: 编程题 语言: G++;GCC Description 小明的密码由N(1<=N& ...
- 牛客挑战赛30 小G砍树 树形dp
小G砍树 dfs两次, dp出每个点作为最后一个点的方案数. #include<bits/stdc++.h> #define LL long long #define fi first # ...
随机推荐
- Visualforce入门第一篇_2017.3.1
什么是Visualforce?? Visualforce是Forcce.com平台上的试图控制技术,结构与标记与HTML非常相似.Visualforce页面可以显示从数据库或者Web服务器得到的数 ...
- 流畅的python之序列
python对开发者友好的根源在于:1.序列的泛型操作2.内置的元组和映身类型3.用缩进来架构的源码4.无需变量声明的强类型 序列数据共用的一套丰富的操作:迭代.切片.排序和拼接.内置序列类型:1.容 ...
- 【转】hurry_liu 大神STM32移植contiki入门之一:系统介绍和开发环境搭建
前言: 由于项目的原因,需要在LPC1788(STM32 cortex-M3)上面跑contiki. 之前没有涉及到contiki,不知其为何物.不过这个不是难事,做IT的,每每遇到新事物,都不会处理 ...
- java代码。从来没想过java里的继承是多么的难懂。如哲学
总结:实例.. 这里不加super("aaa",32); 运行:父类和子类的姓名,年龄是一样的.那这个super为什么没效果呢? 显示:class:Ji姓名是 小红年龄是:20课程 ...
- popd命令
popd命令用于删除目录栈中的记录:如果popd命令不加任何参数,则会先删除目录栈最上面的记录,然后切换到删除过后的目录栈中的最上面的目录. 语法 pushd(选项)(参数) 选项 +N:将第N个目录 ...
- Mongodb 3.6 副本集测试及添加删除节点等操作
下载tar包并安装curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.6.8.tgz [root@mysqlt ...
- MySQL 常用启动,关闭,登录脚本
MySQL 常用启动,关闭,登录脚本 规范化mysql的启动,关闭,登录 1 cat mysql_env.ini #set env MYSQL_USER=system #注意用户权限 MYSQL_PA ...
- Rails通过页面Debug
<%= debug(headers) %>--在视图中显示伴随请求的头部信息 <%= debug(params) %>--在视图中显示请求中的参数 <%= debug(a ...
- app中使用微信分享注意事项
1. 在微信公众平台开通一个微信公众号,https://mp.weixin.qq.com 2. 将自己制作好的已签名的app安装到手机上 3. 下载微信开放平台获取应用签名的apk--- gen ...
- 基于RFC5321使用ncat发送邮件
今天和同事学习到的这个方法,学习了,记录一下: [root@localhost ~]# ncat TeamServer.localdomain ESMTP Postfix EHLO l00.win - ...