题意:

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

思路:

     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. ACM 暴力搜索题 题目整理

    UVa 129 Krypton Factor 注意输出格式,比较坑爹. 每次要进行处理去掉容易的串,统计困难串的个数. #include<iostream> #include<vec ...

  2. hdu 4740 The Donkey of Gui Zhou(暴力搜索)

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4740 [题意]: 森林里有一只驴和一只老虎,驴和老虎互相从来都没有见过,各自自己走过的地方不能走第二次 ...

  3. hdu 1427 速算24点 dfs暴力搜索

    速算24点 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Problem De ...

  4. 随手练——洛谷-P1151(枚举与暴力搜索)

    枚举 #include <iostream> using namespace std; int main() { ; cin >> k; ; i < ; i++) { ) ...

  5. 枚举进程——暴力搜索内存(Ring0)

    上面说过了隐藏进程,这篇博客我们就简单描述一下暴力搜索进程. 一个进程要运行,必然会加载到内存中,断链隐藏进程只是把EPROCESS从链表上摘除了,但它还是驻留在内存中的.这样我们就有了找到它的方法. ...

  6. [luogu 1092] 虫食算 (暴力搜索剪枝)

    传送门 Description Input 包含四行. 第一行有一个正整数 (N≤26). 后面的三行,每行有一个由大写字母组成的字符串,分别代表两个加数以及和.这3个字符串左右两端都没有空格,从高位 ...

  7. HDU 3131 One…Two…Five! (暴力搜索)

    题目链接:pid=3131">HDU 3131 One-Two-Five! (暴力搜索) 题意:给出一串数字,要求用加,减,乘,除(5/2=2)连接(计算无优先级:5+3*6=8*6= ...

  8. 吴裕雄 python 机器学习——模型选择参数优化暴力搜索寻优GridSearchCV模型

    import scipy from sklearn.datasets import load_digits from sklearn.metrics import classification_rep ...

  9. POJ 1129:Channel Allocation 四色定理+暴力搜索

    Channel Allocation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 13357   Accepted: 68 ...

随机推荐

  1. SpringMVC异步处理的 5 种方式

    作者:丁仪 来源:https://chengxuzhixin.com/blog/post/SpringMVC-yi-bu-chu-li-de-5-zhong-fang-shi.html 前段时间研究了 ...

  2. 剑指 Offer 04. 二维数组中的查找 (思维)

    剑指 Offer 04. 二维数组中的查找 题目链接 本题的解法是从矩阵的右上角开始寻找目标值. 根据矩阵的元素分布特性, 当目标值大于当前位置的值时将row行号++,因为此时目标值一定位于当前行的下 ...

  3. HDOJ-1213(简单并查集)

    How many tables HDOJ-1213 #include<iostream> #include<cstring> #include<cstdio> #i ...

  4. 设计模式之工厂方法模式(Factory Method Pattern)

    一.工厂方法模式的诞生 在读这篇文章之前,我先推荐大家读<设计模式之简单工厂模式(Simple Factory Pattern)>这篇文档.工厂方法模式是针对简单工厂模式中违反开闭原则的不 ...

  5. 使用egg.js开发后端API接口系统

    什么是Egg.js Egg.js 为企业级框架和应用而生,我们希望由 Egg.js 孕育出更多上层框架,帮助开发团队和开发人员降低开发和维护成本.详细的了解可以参考Egg.js的官网:https:// ...

  6. 单链表及基本操作(C语言)

    #include <stdio.h> #include <stdlib.h> /** * 含头节点单链表定义及基本操作 */ //基本操作函数用到的状态码 #define TR ...

  7. 如何学习python爬虫

    分享网易云课堂上一个不错的视频教学:http://study.163.com/course/courseMain.htm?courseId=1003285002

  8. 攻防世界 resver catch-me

    catch-me asis-ctf-quals-2016 附件给了个压缩包文件,重命名,解压,获取到elf文件 程序有两处关键比较 第一处: 这里进行动态调试,得到v3=0xB11924E1, byt ...

  9. 创建Maven父子项目以及它们的优点

    此文引用:https://blog.csdn.net/zxl8876/article/details/104180133 创建maven父子项目 第一步创建父项目: 新建一个普通的maven项目 删除 ...

  10. [go-linq]-Go的.NET LINQ式查询方法

    关于我 我的博客|文章首发 开发者的福音,go也支持linq了 坑爹的集合 go在进行集合操作时,有很不舒服的地方,起初我真的是无力吐槽,又苦于找不到一个好的第三方库,只能每次写着重复代码.举个栗子 ...