小 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 # ...
随机推荐
- bzoj 1798 [Ahoi2009]Seq 维护序列seq ——线段树
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1798 先乘后加,就可给加法标记乘上乘法标记. 注意可能有 *0 的操作,所以 pshd 时不 ...
- PyCharm 2017.2.2+PyQt5+Python3.6.0
PyCharm注册地址 http://idea.imsxm.com/ 安装的是miniconda激活虚拟环境执行pip install PyQt5pip install PyQt5-tools 从官网 ...
- c++11之二: 类成员变量初始化
在C++11中, 1.允许非静态成员变量的初始化有多种形式:初始化列表; 使用等号=或花括号{}进行就地的初始化. 可以为同一成员变量既声明就地的列表初始化,又在初始化列表中进行初始化,只不过初始化列 ...
- laravel config文件的使用
好多东西 由于许多地方都要使用与将来可能发生更改 我们需要把它提取出来 作为配置文件来使用 这样将来要修改的时候 只需要修改一处即可 学习源头: https://blog.csdn.net/linyu ...
- ArcGis教程
91卫图助手帮助中心-如何导出ArcGIS Server瓦片格式并进行发布 http://help.91weitu.com/rhdcarcgis%20serverwpgsbjxfb.html ArcG ...
- STM32 -- 故障记录
1.串口2无法发送数据 1)串口2和串口1使用的时钟总线不同: usart1:RCC_APBPeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); usart2:R ...
- Day2-VIM(三):删除
字符删除 x 删除光标所在处字符 X 删除光标所在前字符 这里没有什么可注意的地方,但需要说明一下的是 通常情况下,新手一旦着急便会按着x不动,从而达到删除一大块文本的目的 如果是头几天使用还好说,但 ...
- 将CDM中所有以Relatonship_开头的关系全部重命名,避免生成数据库因为重复关系名报错
Option Explicit ValidationMode = True InteractiveMode = im_Batch Dim mdl '当前model '获取当前活 ...
- 简单的触发黑名单阻断演示 control+c
#include "stdafx.h"#include <signal.h>#include <windows.h> #include <iostre ...
- OpenGL渲染流水线
其实OpenGL的流水线,对我学习来说只能算是一个概念性的东西.毕竟OpenGL也在发展,流水线也不会是一成不变的. 不过理解流水线的过程,重点在于理解每一步的作用,进而可以如何衔接起来,完成整个绘制 ...