hdu4403暴力搜索
来源:互联网 发布:喝水提醒电脑软件 编辑:程序博客网 时间:2024/05/22 23:26
题意:
给你一个数字串,让你在里面添加一个=和若干个+,使等式成立.
思路:
给你一个数字串,让你在里面添加一个=和若干个+,使等式成立.
思路:
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;}
0 0
- hdu4403暴力搜索
- hdu4403 暴力搜索
- hdu4403
- HDU4403
- 暴力搜索
- 暴力搜索
- 暴力搜索
- HDU4403 dfs
- HDU-1128 暴力搜索
- POJ 1380 暴力搜索
- 简单的暴力搜索
- [暴力搜索]Bandwidth UVA140
- wikioi1005 生日礼物 暴力搜索
- POJ 1054 暴力搜索
- 暴力搜索---新技能get
- 搜索(字符串暴力)
- 暴力搜索------回溯法
- 【暴力搜索】分数分解
- MySQL-5.6.13免安装版配置方法
- android,标题栏显示加载,对话框显示加载
- 完成程序国际化
- 详解显示Linux系统信息的命令
- tahoe中配置LVM逻辑卷扩容
- hdu4403暴力搜索
- IOS UIView touch事件 详解
- Opentext Cordys Rest Over Http Service
- C++/C学习笔记
- Windows下MySQL zip版的简单安装
- 单类模式
- 第三周作业——冒泡排序和归并排序
- C++使用SQLite步骤及示例
- SharePoint 门户添加内网域名 (转)