小 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 # ...
随机推荐
- LTE230方案示意图
普天LTE230产品及解决方案 责任编辑:耿鹏飞 2016.12.26 16:42 来源:通信世界网 LTE230 普天 一.LTE230系统特点 (一)系统背景 随着社会的快速发展,能源危机 ...
- 机器学习:集成学习(Ada Boosting 和 Gradient Boosting)
一.集成学习的思路 共 3 种思路: Bagging:独立的集成多个模型,每个模型有一定的差异,最终综合有差异的模型的结果,获得学习的最终的结果: Boosting(增强集成学习):集成多个模型,每个 ...
- Mysql 5.6 MHA (gtid) on Kylin
mha on Kylinip hostname repl role mha role192.168.19.69 mysql1 master node192.168.19.73 mysql2 slave ...
- SQL命令优化
与数据库交互的基本语言是sql,数据库每次解析和执行sql语句多需要执行很多步骤.以sql server为例,当数据库收到一条查询语句时,语法分析器会扫描sql语句并将其分成逻辑单元(如关键词.表达式 ...
- [摘]Android逆向分析常用网站
androidterm: Android Terminal Emulator http://code.google.com/p/androidterm/ droidbox: Andro ...
- 注解:@interface 自定义注解的语法
自定义注解: 使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口,由编译程序自动完成其他细节.在定义注解时,不能继承其他的注解或接口 ...
- Delphi 转圈 原型进度条 AniIndicator 及线程配合使用
Delphi FMX 转圈 原型进度条 progress AniIndicator TAniIndicator TFloatAnimation VCL下也有转圈菊花进度条 TActivityIndic ...
- Shell编程实战 1.1 监控思路架构介绍
监控思路,架构介绍 需求:使用shell定制各种个性化的告警工具,但需要统一化管理,规范化管理. 思路:指定一个脚本包,包含主程序,子程序,配置文件,邮件引擎,输出日志等. 主程序:作为脚本的入口,是 ...
- 部署和调优 3.1 dns安装配置-1
安装配置DNS服务器 装一个bind,首先搜一下. yum list |grep bind bind.x86_64 我们安装这个 安装 yum install bind.x86_64 -y 看一下 ...
- IE9以及IE9以下,无法执行innerHTML这一操作的解决方法
例如:在select下无法用innerHTML添加<option> 解决代码: var s=document.createElement("option"); s.te ...