hdu4403暴力搜索
题意:
给你一个数字串,让你在里面添加一个=和若干个+,使等式成立.
思路:
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暴力搜索相关推荐
- C++ 暴力搜索String pattern search字符串模式的实现算法(附完整源码)
C++暴力搜索String pattern search字符串模式的实现算法 C++暴力搜索String pattern search字符串模式的实现算法完整源码(定义,实现,main函数测试) C+ ...
- 搜索 —— 暴力搜索
[暴力搜索] 暴力搜索,就是将所有情况都举出,并判断其是否符合题目条件.其基本方法是分析题意后,找到一个合适的维度列举每一个元素,以完成题目. 一般主流的 OJ 中,1000ms 的时间限制下可以运行 ...
- 2016蓝桥杯C++A组第六题 寒假作业【暴力搜索】
原题: 现在小学的数学题目也不是那么好玩的. 看看这个寒假作业:□ + □ = □□ - □ = □□ × □ = □□ ÷ □ = □(如果显示不出来,可以参见[图1.jpg])每个方块代表1~13 ...
- 暴力搜索---新技能get
最近新学习了一种新的求解的方法,就是暴力搜索,在通常做题没有很明确的思路的时候,通常都会采用的一种方式. 我们知道,一个问题的解空间通常对应的是一棵树的方式进行组织的,那么我们可以通过根据题目中的条件 ...
- 算法模版:暴力搜索之DFS【沈七】
本文已收录于专栏 ⭐️ <算法通关笔记>⭐️ 算法模版:暴力搜索之DFS 前言 基本概念 算法思想 常用模板 三种枚举方式 指数型枚举 排列型枚举 组合型枚举 完结散花 题目练习 参考文章 ...
- 2019 蓝桥杯省赛 A 组模拟赛(一)C. 结果填空:马的管辖 (暴力搜索)
题目: 在中国象棋中,马是走日字的.一个马的管辖范围指的是当前位置以及一步之内能走到的位置,下图的绿色旗子表示马能走到的位置. 如果一匹马的某个方向被蹩马脚,它就不能往这个方向跳了,如下图所示,海星的 ...
- 过河系列--暴力搜索
人鬼过河: 三个传道士和三个食人族土著 如何全部渡船到对岸 限制: 船最多载2人 当一边土著多于传道士时 土著会将传道士吃掉 5人过桥: 5个人通过的时间分别为1.3.6.8.12, 只有一盏30秒的 ...
- 字符串搜索算法:暴力搜索,KMP
目录 前言废话 暴力搜索 KMP算法 前言废话 最近脑子有点昏昏沉沉,喝点那种红枣泡的白酒居然神奇的好了一些,感觉很舒服.看来喝少量的酒可以让人更清醒,长期喝可能有养生的效果? 写道这里去百度了 ...
- k-Anonymity(K匿名)之暴力搜索大法
k-Anonymity(K匿名)之暴力搜索大法 k匿名 k-Anonymity(K匿名)之暴力搜索大法 写在前面 代码 读取文件 分类 距离矩阵 正向搜索 逆向匹配 匿名化处理 写入文件 实验结果 写 ...
最新文章
- 判断一个string是否可以为数字
- 句法分析是什么?成分句法分析、依存句法分析又是什么?他们之间有什么区别?
- SQL查询案例:行列转换[行转列, 使用 CASE WHEN 处理]
- Python-函数递归调用
- RAID技术超详细讲解
- fiddler手机端抓包配置
- 干货|MIT线性代数课程精细笔记5
- ConcurrentLinkedQueue常用方法
- failed to open log file_C++中glog源码剖析以及如何设计一个高效 log模块
- POJ 2718 Smallest Difference(dfs,剪枝)
- SQL2000和SQL2005同时安装问题(转载)
- word空白下划线怎么打出来
- 爬取大麦网的演出数据
- crypto405-grasshopper(网鼎杯2022)
- OLAP 系统选型,选 Apache Kylin 还是 ClickHouse?
- poco mysql 安装_linux 下 POCO 安装
- windows系统切换用户(通过cmd切换用户)
- xml读取出现中文乱码
- 有哪些靠谱的服务器安全软件?
- 博图sodt定时器的用法_西门子博图定时器指令说明