最近小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. 凡普金科以互金 “头马”入选互联网企业百强的启示:创新为王
  2. 算法工程师掌握了这个炼丹技巧的我开始突飞猛进
  3. 【Python】全网最新最全Pyecharts可视化教程(二):绘制好看的交互式地图教程
  4. 教你如何进入有密码的 XP 系统(下)
  5. 栅格单元值的选取方法_ArcGIS中栅格数据重采样方法
  6. 清翔电子单片机原理图stc89c52_1000. 电子编程入门到工程师--从看得到开始
  7. 论文笔记_S2D.33_2015-ICCV_使用单个多尺度卷积网络,预测深度、表面法线和语义标签
  8. PSP3000破解教程
  9. PS小知识(一)——建立不透明度:蒙版
  10. win10双显卡怎么切换amd和英特尔_手把手给你细说win10系统双显卡设置只使用独立显卡的流程...
  11. 计算机家庭组改工作组,win7系统如何更改工作组
  12. html打砖块游戏制作,JavaScript实现打砖块游戏
  13. STM32 无法使用IAR下载程序问题
  14. sqlyog连接mysql错误码2058 正确处理方式
  15. 洛谷 P3387 缩点 题解
  16. mac下更新自带的PHP版本到5.6或7.0
  17. Mac下配置VIM .vimrc
  18. PHP菜刀在线WEB版源码
  19. (语法糖)ES6类class声明类的方式 -ES5类声明继承
  20. 基于STM32物联网WiFi智能家居控制系统设计(原理图+源代码+系统资料)

热门文章

  1. hgame 2022 逆向 reverse 部分题目 Writeup
  2. AtCoder Beginner Contest 164 E Two Currencies Bellman-Ford优化思想+01背包+动归dp状态转移
  3. 专访王豫翔:编程道路上的“三少三多”
  4. linux编辑vim指令,Linux系统文本编辑器vim指令大全
  5. psf2otf函数的解释
  6. 华硕路由域名访问_域名绑定ip怎么做?有什么方法?
  7. 接收蓝牙信号并发送到云端服务器,蓝牙如何可以与云服务器连接
  8. linux系统下mysql编码格式,Windows、Linux系统下mysql编码设置
  9. 读书笔记之《大型分布式网站架构设计与实践》
  10. mysql从删库到跑路 Ubuntu篇