最近小A得到了一串号码——一个包含了 n 个数字 a_1 a_2 … a_n的数列。小A认为一个数列是超级号码,如果它能被分为两个或更多的有相同值的部分。例如,号码350178 是超级号码因为它可以被分为三个部分350, 17 和 8: 3+5+0=1+7=8。每一个数字只能属于一个部分 。

帮小A看看他的号码是不是超级号码。

Input
第一行包含一个整数 n (2 <= n <= 100) — 号码的数字个数

第二行包含 n 个数字 a_1 a_2 … a_n (0 <= a_i <= 9) — 小A的号码. 数字间没有空格。

Output
如果是超级号码则输出 “YES”, 否则输出 “NO” (不带引号)。

Examples
Input
5
73452
Output
YES
Input
4
1248
Output
NO
Note
第一个样例分为了三部分 7, 34 和 52: 7=3+4=5+2。

第二个样例不是超级号码。
题解:
这个题是昨天没写出来的,然后今天重新理了一下,发现是昨天没有处理好数字里面有0的问题,其实数字串里面的0完全可以去掉,对结果没有任何影响,而且还能简化代码的难度。
关于这题的输入
还有就是很多人喜欢用字符串存这一串数字,最后转化成整型数组,其实可以直接用整型数组输入,不需要多一步转换的操作。
其实scanf的格式字符串里,%nd代表输入一个 长度<=n的整型 变量,所以这题的输入我们用 %1d 就行了。
AC代码:

#include <bits/stdc++.h>
using namespace std;
bool dfs(int num, int *a, int size)
{if (size == 0)return true;int sum = 0;for (int i = 0; i < size; i++){sum += a[i];if (sum > num)return false;else if (sum == num)return dfs(num, a + i + 1, size - i - 1);}return false;
}
bool solove(int *a, int size)
{if (size == 0) //如果输入全部都是0return true;int num = 0;for (int i = 0; i < size - 1; i++) //保证最低拆成两部分,最后一位不能累加{num += a[i];                           //计算前n项和num,然后以num为相同的数字,向后面搜索。if (dfs(num, a + i + 1, size - i - 1)) //如果可以拆成若干个num,说明是超级数字return true;}return false;
}
int main(void)
{int n;int a[120];scanf("%d", &n);int size = 0;for (int i = 0, x; i < n; i++)//输入可以不用字符串{scanf("%1d", &x); //%1d表示一次只读一位if (x != 0)       //如果输入有0,可以直接去掉,去掉不会影响超级数字的结果,而且还能简化代码的逻辑a[size++] = x;}if (solove(a, size))puts("YES");elseputs("NO");
}

Good Ticket(深搜)相关推荐

  1. Go 分布式学习利器(15) -- Go 实现 深搜和广搜

    强化语法,回顾算法. 通过Go语言实现 深度优先搜索 和 广度优先搜索,来查找社交网络中的三度好友关系(三度指的是一个节点到 其相邻节点 到 其相邻节点的节点 ,图递增三层好友关系). 涉及到的Go语 ...

  2. 水管工游戏 (深搜)

    水管工游戏 本题依然是采用搜索,深搜,广搜都可以,本代码采用深搜,此题在搜索时需要增加一些判断条件以及下一步要搜索的位置即可. 代码如下: #include<stdio.h> int a[ ...

  3. Poj(2488),按照字典序深搜

    题目链接:http://poj.org/problem?id=2488 思路:按照一定的字典序深搜,当时我的想法是把所有的可行的路径都找出来,然后字典序排序. 后来,凡哥说可以在搜索路径的时候就按照字 ...

  4. [数据结构] 迷宫问题(栈和队列,深搜和广搜)

    代码: #include <iostream> #include <string.h> #include <stack> #include <queue> ...

  5. 迷宫问题最短捷径c语言深搜,迷宫问题 C语言实现(深搜)

    问题描述: 2015年05月21日 10:24:05 这是我自己出的一道题   其原型基于迷宫问题,用深搜来解决的!我就简单的说一说吧! 给定一个N * M 的迷宫!,1代表有障碍,0代表无障碍可通行 ...

  6. POJ-1724 深搜剪枝

    这道题目如果数据很小的话.我们通过这个dfs就可以完成深搜: void dfs(int s) {if (s==N){minLen=min(minLen,totalLen);return ;}for ( ...

  7. POJ2044 深搜+剪枝(云彩下雨)

    题意:        有一个城镇,是4*4的大小的,然后你控制一块云彩,2*2的,你每天可以有9种走的方法,上下左右,或者不动,走的时候可以走1或者2步,云彩所在的地方肯定会下雨,然后给你做多365天 ...

  8. hdu4876 深搜+(随机枚举剪枝)

    题意:       给你n个数,让你从选择k个数,然后排成一个环(k个数的顺序随意,但是排成一个环后就不能变了),然后可以在这个环上任意的找连续w个数(w<=k),可以找多次,得到一个值等于当前 ...

  9. 单词拼接 ----- 深搜

    先判断这些单词能不能构成 接龙 , 能的话在排序 , 然后深搜确定接龙 . 题解 : 如果先确定所有单词的首尾字母的个数 , 如果首字母个数等于尾字母个数就不用管了 , 如果发现首字母比尾字母大1那个 ...

  10. [深搜]24点--改进版本

    回顾 之前写的版本[深搜回溯]24点,没有考虑到中间数值的可能性,是对数值进行深搜遍历,而不是对数值对进行深搜数值遍历,使得较为复杂的24点运算中有部分数据没办法得到解决.这次的改进将围绕着这个进行. ...

最新文章

  1. input输入框为number类型时,去掉上下小箭头
  2. 【知识积累】C#中结构体和类的区别
  3. wxWidgets:wxNavigationKeyEvent类用法
  4. git怎么读_【杂谈】怎么使用有三AI完成系统性学习并赚钱
  5. 使用PM2搭建在线vue.js开发环境(以守护进程方式热启动)
  6. leetcode491. 递增子序列(回溯算法)
  7. 264 参考帧 list0 list1
  8. matlab画地震复杂模型,基于MATLAB的地震正演模型实现
  9. 如何让普通人了解网络隐私的重要性
  10. 2021高考成绩查询甘肃天水,2021年天水高考成绩排名及成绩公布时间什么时候出来...
  11. Java毕设项目——大学生社团管理系统(java+SSM+Maven+Mysql+Jsp)
  12. PE文件格式详解(0)
  13. 标准差与标准误差区别(精简版)
  14. Python笔记_第二篇_面向过程_第二部分_4.常用模块的简单使用_窗体控制模块(win32con、win32gui)...
  15. 【板栗糖GIS】DOS—如何在目录文件中批量建立子文件夹
  16. echarts之饼图制作+标示线
  17. 毕业设计智慧停车场--车牌识别树莓派环境搭建
  18. 在黑暗中哭泣的众筹,黎明的曙光还未到来
  19. k8s.4-kubeadm部署高可用kubernetes集群 1.21
  20. vue中,应用mapbox地图——地图组件mapbox-gl和语言包@mapbox/mapbox-gl-language地图英文转中文 accesstokens-访问令牌移动端地图-leaflet

热门文章

  1. Serverless实战——2分钟,教你用Serverless每天给女朋友自动发土味情话
  2. 线段覆盖 java,南邮 OJ 1407 线段覆盖
  3. 2020牛客暑期多校训练营(第九场) The Flee Plan of Groundhog
  4. installshield mysql_InstallShield 调用批处理部署MySql数据库 | 学步园
  5. foxmail 163企业邮箱配置
  6. 计算机应用能力考试ppt,全国专业技术人员计算机应用能力考试 PPT 2003 题库版...
  7. 关于安装SQLServer2012时遇到1402错误,未能打开注册表项的解决方法
  8. PS制作 LOGO图片
  9. 解决在vue/react中axios请求超时的问题
  10. (LeetCode)数数关系——Non-decreasing Array(非递减数组)