题意:
     给你一个数字串,让你在里面添加一个=和若干个+,使等式成立.

思路:

     lmax最大是15,直接暴搜,无压力,关键是判重,要在答案的时候判重,一开始在进队列之前判的,各种wa,哎!后来才发现如果在之前判断就不能得到当前什么符号都不加,而下一个有符号了,判重我用的是map,随意什么只要别爆内存就行,水搜索竟然调了2个小时,丢脸啊...


#include<stdio.h>
#include<string.h>
#include<queue>
#include<map>

using namespace std;typedef struct
{int mk[16];char str[16];int nowid ,deng;
}NODE;NODE xin ,tou;
int nn;
map<__int64 ,__int64>mark;bool MK(NODE aa)
{__int64 sum = 0;for(int i = 0 ;i <= nn ;i ++)sum = sum * 10 + aa.mk[i];if(mark[sum]) return 1;mark[sum] = 1;return 0;
}bool ok(NODE tou)
{if(tou.deng){int l ,r;l = r = 0;int sum = 0;int mki;for(int i = 0 ;tou.mk[i] != 2 ;i ++){if(tou.mk[i] == 1){l += sum;sum = tou.str[i] - 48;}else{sum = sum * 10 + tou.str[i] - 48;}mki = i;}l += sum;sum = 0;for(int i = mki + 1;i <= nn ;i ++){if(tou.mk[i] == 1){r += sum;sum = tou.str[i] - 48;}else{sum = sum * 10 + tou.str[i] - 48;}}r += sum;return l == r && !MK(tou);    }return 0;
}int BFS()
{memset(xin.mk ,0 ,sizeof(xin.mk));nn = strlen(xin.str) - 1;xin.nowid = 0;xin.deng = 0;queue<NODE>q;q.push(xin);int ans = 0;mark.clear();while(!q.empty()){tou = q.front();q.pop();if(ok(tou))ans ++;if(tou.nowid == nn) continue;      if(!tou.deng)// =
      {xin = tou;xin.deng = 1;xin.nowid = tou.nowid + 1;xin.mk[xin.nowid] = 2;q.push(xin);  }//+
      xin = tou;xin.deng = tou.deng;xin.nowid = tou.nowid + 1;xin.mk[xin.nowid] = 1;q.push(xin);//
      xin = tou;xin.deng = tou.deng;xin.nowid = tou.nowid + 1;xin.mk[xin.nowid] = 0;q.push(xin);} return ans;
}int main ()
{while(~scanf("%s" ,xin.str) && strcmp("END" ,xin.str)){printf("%d\n" ,BFS());}return 0;
}

hdu4403暴力搜索相关推荐

  1. C++ 暴力搜索String pattern search字符串模式的实现算法(附完整源码)

    C++暴力搜索String pattern search字符串模式的实现算法 C++暴力搜索String pattern search字符串模式的实现算法完整源码(定义,实现,main函数测试) C+ ...

  2. 搜索 —— 暴力搜索

    [暴力搜索] 暴力搜索,就是将所有情况都举出,并判断其是否符合题目条件.其基本方法是分析题意后,找到一个合适的维度列举每一个元素,以完成题目. 一般主流的 OJ 中,1000ms 的时间限制下可以运行 ...

  3. 2016蓝桥杯C++A组第六题 寒假作业【暴力搜索】

    原题: 现在小学的数学题目也不是那么好玩的. 看看这个寒假作业:□ + □ = □□ - □ = □□ × □ = □□ ÷ □ = □(如果显示不出来,可以参见[图1.jpg])每个方块代表1~13 ...

  4. 暴力搜索---新技能get

    最近新学习了一种新的求解的方法,就是暴力搜索,在通常做题没有很明确的思路的时候,通常都会采用的一种方式. 我们知道,一个问题的解空间通常对应的是一棵树的方式进行组织的,那么我们可以通过根据题目中的条件 ...

  5. 算法模版:暴力搜索之DFS【沈七】

    本文已收录于专栏 ⭐️ <算法通关笔记>⭐️ 算法模版:暴力搜索之DFS 前言 基本概念 算法思想 常用模板 三种枚举方式 指数型枚举 排列型枚举 组合型枚举 完结散花 题目练习 参考文章 ...

  6. 2019 蓝桥杯省赛 A 组模拟赛(一)C. 结果填空:马的管辖 (暴力搜索)

    题目: 在中国象棋中,马是走日字的.一个马的管辖范围指的是当前位置以及一步之内能走到的位置,下图的绿色旗子表示马能走到的位置. 如果一匹马的某个方向被蹩马脚,它就不能往这个方向跳了,如下图所示,海星的 ...

  7. 过河系列--暴力搜索

    人鬼过河: 三个传道士和三个食人族土著 如何全部渡船到对岸 限制: 船最多载2人 当一边土著多于传道士时 土著会将传道士吃掉 5人过桥: 5个人通过的时间分别为1.3.6.8.12, 只有一盏30秒的 ...

  8. 字符串搜索算法:暴力搜索,KMP

    目录 前言废话 暴力搜索 KMP算法 前言废话    最近脑子有点昏昏沉沉,喝点那种红枣泡的白酒居然神奇的好了一些,感觉很舒服.看来喝少量的酒可以让人更清醒,长期喝可能有养生的效果? 写道这里去百度了 ...

  9. k-Anonymity(K匿名)之暴力搜索大法

    k-Anonymity(K匿名)之暴力搜索大法 k匿名 k-Anonymity(K匿名)之暴力搜索大法 写在前面 代码 读取文件 分类 距离矩阵 正向搜索 逆向匹配 匿名化处理 写入文件 实验结果 写 ...

最新文章

  1. 判断一个string是否可以为数字
  2. 句法分析是什么?成分句法分析、依存句法分析又是什么?他们之间有什么区别?
  3. SQL查询案例:行列转换[行转列, 使用 CASE WHEN 处理]
  4. Python-函数递归调用
  5. RAID技术超详细讲解
  6. fiddler手机端抓包配置
  7. 干货|MIT线性代数课程精细笔记5
  8. ConcurrentLinkedQueue常用方法
  9. failed to open log file_C++中glog源码剖析以及如何设计一个高效 log模块
  10. POJ 2718 Smallest Difference(dfs,剪枝)
  11. SQL2000和SQL2005同时安装问题(转载)
  12. word空白下划线怎么打出来
  13. 爬取大麦网的演出数据
  14. crypto405-grasshopper(网鼎杯2022)
  15. OLAP 系统选型,选 Apache Kylin 还是 ClickHouse?
  16. poco mysql 安装_linux 下 POCO 安装
  17. windows系统切换用户(通过cmd切换用户)
  18. xml读取出现中文乱码
  19. 有哪些靠谱的服务器安全软件?
  20. 博图sodt定时器的用法_西门子博图定时器指令说明

热门文章

  1. 举例浅介grep、sed、awk
  2. C语言成长学习题(十六)
  3. 表达式解析执行器 IKExpression
  4. [原] Android持续优化 - 提高流畅度
  5. Java中的String数据类型归纳
  6. 【转】【Mysql学习】之Mac上用终端使用mySQL
  7. 【bzoj4832】[Lydsy1704月赛]抵制克苏恩 期望dp
  8. CentOS安装Navicat
  9. 【最小费用最大流】N. April Fools' Problem (medium)
  10. [转]Chrome 控制台console的用法