小 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=0,f=1;char c=getchar();for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;for(;isdigit(c);c=getchar()) x=x*10+c-'0';return x*f; } const int maxn=10; char s[maxn]; int n; int solve() {scanf("%s",s+1);n=strlen(s+1);rep(x,1,n-1) {rep(S,0,(1<<n-1)-1) {int left=0,cur=0,right=0;rep(i,1,x) {cur=cur*10+s[i]-'0';if(S>>i-1&1) left+=cur,cur=0;}left+=cur;cur=0;rep(i,x+1,n) {cur=cur*10+s[i]-'0';if(S>>i-1&1) right+=cur,cur=0;}right+=cur;cur=0;if(left==right) return 1;}}return 0; } int main() {freopen("equation.in","r",stdin);freopen("equation.out","w",stdout);int T=read();while(T--) puts(solve()?"Yes":"No");return 0; }
转载于:https://www.cnblogs.com/mxrmxr/p/9794076.html
小 M 的算式(dfs)相关推荐
- 数独小项目开篇:DFS解决数独难题
数独小项目开篇:DFS解决数独难题 前言 DFS解决数独问题思路 代码实现细节 样例测试 总结 Reference 前言 这周小刀是挺忙的,周末加班,哎,谁不是996呢?(打工魂燃烧吧~ 这次 ...
- 小 Biu 的旅行(dfs)
题目描述 小Biu所在的城市有n个景点,有一些景点之间有单向联通的道路,现在小Biu在1号景点上,他想知道到达除了1号景点之外的每个景点分别最少需要经过多少条道路? 如图所示为样例数据,可以知道小Bi ...
- Java 第十一届 蓝桥杯 省模拟赛 小明植树(DFS)
小明植树 题目 问题描述 小明和朋友们一起去郊外植树,他们带了一些在自己实验室精心研究出的小树苗. 小明和朋友们一共有 n 个人,他们经过精心挑选,在一块空地上每个人挑选了一个适合植树的位置,总共 n ...
- 【HDU3949 + BZOJ2115 + CF724G】【异或线性基例题】| 倍增 | 第k小异或和 | DFS处理环 |【CGWR】| N
三道关于异或线性基的有趣的题目 [1] HDU 3949. XOR Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/3276 ...
- ACM 小蝌蚪安家 简单DFS
描述 在一个矩形区域内,有些地方有水,有些地方没水.所有相邻的有水的地方会共同组成一个水洼,小蝌蚪想在这块区域中找到一个最大的水洼来安家. 输入 有多组输入数据,每组第一行包含两个正整数n,m(n,m ...
- hrbust 1614 小z的地图 dfs
小z的地图 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 101(30 users) Total Accepted: 28(24 us ...
- 1916. 统计为蚁群构筑房间的不同顺序 费马小定理+快速幂+DFS
1916. 统计为蚁群构筑房间的不同顺序 你是一只蚂蚁,负责为蚁群构筑 n 间编号从 0 到 n-1 的新房间.给你一个 下标从 0 开始 且长度为 n 的整数数组 prevRoom 作为扩建计划.其 ...
- [蓝桥杯2016初赛]凑算式-dfs,next_permutation
代码如下: #include <iostream> using namespace std; const int N = 15; bool st[N]; double a[N];int c ...
- 蓝桥杯2017初赛-9数算式-dfs
题目描述 观察如下的算式:9213 x 85674 = 789314562 左边的乘数和被乘数正好用到了1~9的所有数字,每个1次. 而乘积恰好也是用到了1~9的所有数字,并且每个1次. 请你借助计算 ...
最新文章
- 【怎样写代码】工厂三兄弟之工厂方法模式(一):问题案例
- java 两个值对换_java将两个整型变量值进行互换的几种实现方法
- 无法为新的Android ActionBar支持找到Theme.AppCompat.Light
- JNDI 笔记(一) 概述
- class中一个小技巧
- 帧同步_什么是帧同步什么是状态同步
- mysql+性能优化+命令_MySQL性能优化
- 建立一个通讯录的结构记录,包括姓名、年龄、电话号码
- 《现代操作系统》精读与思考笔记 第七章 多媒体
- 浅谈LTE技术及实际应用方案
- python爬虫模拟登录人人网
- 大数据分析四大分析要素
- 『TensorFlow』批处理类
- erlang随机数问题
- 10月8日提交的结对编程工程中的经验和教训
- 公钥加密数字签名证书的原理总结
- 惠州VOCs实验室建设:日常废气处理工艺
- linux磁盘文件检查修复工具下载,Linux磁盘坏道的检测及修复
- 澤天夬 (易經大意 韓長庚)
- 众筹源码 php,助创cms众筹源码系统v1.0