小明的数学作业【经大神指教】
来源:互联网 发布:工业控制网络安全性 编辑:程序博客网 时间:2024/04/28 06:21
小明的数学作业(dfs +模拟栈头)【经大神指教】
Description
寒假刚刚过去,小明的数学作业还没完成,其中一道题目的意思是给定n个整数,
每两个整数间(包括第一个整数前)都存在一个空位,求是否可以在上面填写四则运算符使得n个数的运算值等于m, 如:1 + 2 * 3 = 7 (除法结果向下取整),你可以帮助他完成作业吗?
Input
输入数据首先是一个t(t <= 15),后面跟t组数据,每组数据由两行构成,第一行由两个整数n(n <= 12)和m(m < 2^31)构成,第二行由n个整数a[i] (0 <= i < n && a[i] < 2^31)构成。
Output
如果存在运算值等于m,则输出"YES",否则输出"NO";
Sample Input
23 71 2 33 81 2 3
Sample Output
比赛的时候一直不知道如何 先运算 * / 。。 一直无从下手。。
代码如下:
#include <iostream>using namespace std;typedef long long LL;LL m, a[15];int n;int dfs(LL sum, LL head, int i) { if (i == n) { return sum + head == m; } return (dfs(sum + head, a[i], i + 1) || dfs(sum + head, -a[i], i + 1) || dfs(sum, a[i] * head, i + 1) || (a[i] != 0 && dfs(sum , head/a[i], i + 1)));}int main() { int t; cin >> t; while (t--) { cin >> n >> m; for (int i = 0; i < n; i++) cin >> a[i]; bool yes = dfs(0, a[0], 1) || dfs(0, -a[0], 1); printf("%s\n", yes ? "YES" : "NO"); }}
YESNO
HINT
Source
0 0
- 小明的数学作业【经大神指教】
- ZSC 1568 小明的数学作业 (DFS + 模拟栈)
- 请大神指教,检查多维数组,输出比60小的数组
- 谁知道synchronized的用法?求大神指教
- 求大神指教
- 求大神指教
- 求大神指教!!!
- 求大神指教!!!
- 大神们,求指教!!!
- 求大神指教
- 求大神们指教
- 请教request 对象为什么是空的?谢谢大神指教
- Dubbo provider.java的 java.lang.IllegalArgumentException 求大神指教
- js 禁止子窗口的操作 求大神指教
- 关于window.location.href的一些问题,求大神指教
- 小明的调查作业
- 小明的调查作业
- 小明的调查作业
- PHP编程效率的20个要点
- Prometheus监控 - 查询表达式篇
- 判断是否是二叉查找树的后序遍历结果
- python 操作 mssqlserver 数据库遇到备份数据库语句的问题
- 调用系统图库,添加自定义字体,屏幕截图
- 小明的数学作业【经大神指教】
- Number of 1 Bits
- CentOS6.5 Django1.8.7之创建项目篇(2)
- BZOJ 3932
- 快速排序法 php
- python Queue学习
- 链表学习系列——1 基础概念之单向链表
- NSUserDefault存储对象模型
- 面向对象分析和设计(第3版)读书笔记 - 认识 OO