描述

  有一个未完成的等式:1  2  3  4  5  6  7  8  9=N。

题目

  给出整数N的具体值后,请你在2,3,4,5,6,7,8,9这8个数字的每一个前面,或插入一个运算符号“+”号,或插入一个运算符号“-”号,或不插入任何运算符号,使等式成立,并统计出能使等式成立的算式总数,若无解,则输出0。例如:取N为108时,共能写出15个不同的等式,以下就是其中的二个算式:

1+23+4+56+7+8+9=108     
123-45+6+7+8+9=108

输入输出格式

输入

  只有1个数,即整数N的值。-30000≤n≤1000000

输出

  只有一行,该行只有1个数,表示能使等式成立的算式总数。

输入输出样例

输入样例1

108

输出样例1

15

解题思路

  此题先DFS搜一遍从2到9每个数字前的符号情况,用数组存起来,最后在求值即可。

题解

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n,ans=0;
 4 bool flag;
 5 int num[11];//0没有,1加法,2减法
 6 void dfs(int sum)
 7 {
 8     if(sum==10)//所有的枚举完了
 9     {
10         int q=0,p=0;//q是总值,p是变量值
11         for(int i=1;i<=9;)//九个数字
12         {
13             if(num[i]==1)flag=true;//true就是加,false是减
14             if(num[i]==2)flag=false;
15             p=i;//首先存入这个数 再来看他后面的符号
16             i++;
17             while(num[i]==0&&i<=9)//判断数字连着的情况,*10+数字即可
18             {
19                 p=p*10+i;
20                 i++;
21             }
22             if(flag)//加法就加
23             {
24                 q+=p;
25             }
26             else q-=p;//减法就减
27         }
28         if(q==n)ans++;  //值是正确的方案加一
29         return;
30     }
31     num[sum]=0;//搜索三种符号情况
32     dfs(sum+1);
33     num[sum]=1;
34     dfs(sum+1);
35     num[sum]=2;
36     dfs(sum+1);
37 }
38 int main()
39 {
40     cin>>n;
41     num[1]=1;//1前面一定是加,不要忘了
42     dfs(2);//从第二位前面开始
43     cout<<ans;
44     return 0;
45 }

转载于:https://www.cnblogs.com/hualian/p/11151485.html

入门OJ 3168【等式】相关推荐

  1. 2019.6.7 一场搜索专题的考试【including 洛谷·血色先锋队,入门OJ·兴建高铁,珠光宝气阁

    这次分数还好.但全是搜索题还没上200就有点打击人了--[本狸才177QAQ 血色先锋队/血色敢死队 传送门:洛谷P1332 & 入门OJ P2259 Description 邪魔天国领主复活 ...

  2. begin.lydsy 入门OJ题库:1104:纯粹合数

    1104: 纯粹素数 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 258  Solved: 91 [Submit][Status][Web Boar ...

  3. begin.lydsy 入门OJ题库:1101、1102:那些四位数、那些四位数之二

    1101: 那些四位数 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 205  Solved: 160 [Submit][Status][Web Bo ...

  4. begin.lydsy 入门OJ题库:1104:那些N位数

    1103: 那些N位数 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 231  Solved: 97 [Submit][Status][Web Boa ...

  5. 【bzoj 入门OJ】[NOIP 热身赛]Problem C: 星球联盟(并查集)

    Problem C: 星球联盟 Time Limit: 4 Sec  Memory Limit: 256 MB Submit: 57  Solved: 15 [Submit][Status][Web ...

  6. [Usaco2010 Hol]cowpol 奶牛政坛(入门oj Problem 5274)

    第三次发题解哈.有什么表述错误的请见谅(可以提出). 题目源地址:https://www.lydsy.com/JudgeOnline/problem.php?id=1776 文章目录 题目描述 输入 ...

  7. [usaco2010 Oct]Soda Machine (入门oj Problem 6195 )

    鬼知道我有多蒟蒻,第五次发题解了 题目原地址点此进入 呜呜呜~今天在CSDN上看了好多大佬神犇的OI退役文,百感交集,故写篇题解振奋自己. 文章目录 题目描述 输入 输出 样例输入 样例输出3 题目大 ...

  8. 问题 J: [入门OJ]求和 为 C(初中生请多多指教)

    时间限制: 1 Sec  内存限制: 256 MB 题目描述 楠楠在网上刷题,感觉第一题:求两数的和(A+B Problem)太无聊了,于是增加了一题:求和为C的Problem,难倒了一群小朋友,哈哈 ...

  9. 问题 A: [入门OJ]买水果(初中生请多多指教)

    在学校电脑搞的 时间限制: 1 Sec  内存限制: 256 MB 题目描述 萌萌和瞳瞳各拿 N 元去买苹果和西瓜,已知每个苹果的价格是 a. 每个西瓜的价格是 b. \n 萌萌希望 N 元买苹果全部 ...

  10. 入门OJ 3793: [Noip模拟题]剪草 (DP)

    题目 Description 有N棵小草,编号0至N-1.奶牛Bessie不喜欢小草,所以Bessie要用剪刀剪草,目标是使得这N棵小草的高度总和不超过H.在第0时刻,第i棵小草的高度是h[i],接下 ...

最新文章

  1. ESX虚拟机文件列表详解
  2. python 反爬取数据
  3. Vue—基础概念—实例
  4. mysql创建用户报错ERROR 1290
  5. 形容PHP程序员的语句,形容程序员的句子
  6. Linux的铜墙铁壁:防火墙之iptables
  7. 【github相关】之h264bitstream
  8. 恢复初始快捷键_CAD常用命令快捷键大全,47个快捷键50个CAD技巧,教你快速画图...
  9. z-index终结者
  10. Asp.net MVC 移除视图引擎(WebFormViewEngine或者RazorViewEngine)
  11. oracle删除临时会话表,新一代QQ群机器人
  12. 二项分布与伯努利试验的关系,看图说话
  13. Flink CDC 2.3 发布,持续优化性能,更多连接器支持增量快照,新增 Db2 支持
  14. 三只松鼠网络营销成功之路
  15. [转]设置IE背景色保护你的眼睛视力_鹤壁吧_贴吧
  16. Python OpenCV 物体识别
  17. 用c语言如何以图形方式显示家谱,数据结构_家谱管理系统
  18. C++ Combo Box控件用法
  19. 关于Titan的中文整理
  20. 计算机wps系统的造字程序在哪里,Winxp系统自带造字程序在哪|Winxp系统自带造字程序的使用方法...

热门文章

  1. 画出清明上河图的代码_怎样用一串代码画出《清明上河图》?
  2. 华为悦盒6108V9-V9U-V9_PUB-6108V9C-非高安版-通刷精简固件及教程
  3. web服务器与web框架
  4. 上位机和下位机之间局域网的搭建
  5. CAD图纸转换成高质量的彩色PDF格式如何操作?
  6. MIPI D-PHY IP 使用说明(二)
  7. php 写聊天室源码,PHP实现简单聊天室(附源码)_PHP
  8. java面试之Servlet/JSP面试题
  9. 个人成长(学习方法)
  10. 【入门篇】SIP 协议详解