记忆化搜索 uva-10651-Pebble Solitaire
来源:互联网 发布:局域网远程关机软件 编辑:程序博客网 时间:2024/05/16 17:22
题目链接:
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1592
题目意思:
给一串-和o组成的字符串,你可以把“-oo"变成”--o",可以把“oo-”变成“--o",问最后最少有多少个o.
解题思路:
采用记忆化搜素的方法,用map标记是否访问过,用string的substr提取连续的三个字符,用string的replace得到替换后的字符串。
代码:
#include<iostream>#include<cmath>#include<cstdio>#include<cstdlib>#include<string>#include<cstring>#include<algorithm>#include<vector>#include<map>#include<stack>#include<queue>#define eps 1e-6#define INF (1<<20)#define PI acos(-1.0)using namespace std;map<string,bool>mymap;int ans;void dfs(string cur){ if(mymap.find(cur)!=mymap.end()) //如果已经检查了 return ; int len=cur.size(),num=0; for(int i=0;i<len;i++) //查看o的数量 if(cur[i]=='o') num++; if(num<ans) ans=num; mymap[cur]=true; //把当前状态放到map里 for(int i=0;i<=len-3;i++) { if(cur.substr(i,3)=="-oo") //如果有-oo出现,则可以调换 { string temp=cur; temp.replace(i,3,"o--"); dfs(temp); } if(cur.substr(i,3)=="oo-") { string temp=cur; temp.replace(i,3,"--o"); dfs(temp); } } return ;}int main(){ int n; scanf("%d",&n); string temp; while(n--) { map<string,bool>::iterator begin=mymap.begin(); map<string,bool>::iterator end=mymap.end(); mymap.erase(begin,end); //把当前的map清空 ans=INF; cin>>temp; dfs(temp); printf("%d\n",ans); } return 0;}
- 记忆化搜索 uva-10651-Pebble Solitaire
- UVa 10651 Pebble Solitaire 记忆化搜索+位运算
- UVA 10651 Pebble Solitaire(bfs + 哈希判重(记忆化搜索?))
- uva 10651 - Pebble Solitaire(记忆化搜索)
- uva 10651 Pebble Solitaire(dp,状态压缩,记忆化搜索)
- UVa 10651 Pebble Solitaire(DP 记忆化搜索)
- UVa 10651 Pebble Solitaire (DP 卵石游戏 记忆化搜索)
- 【DP】UVA 10651 Pebble Solitaire 记忆化搜索
- uva 10651 Pebble Solitaire(动态规划:记忆化搜索)
- UVA 10651 Pebble Solitaire(记忆化)
- UVA 10651 Pebble Solitaire 鹅卵石摆放 记忆化搜索+DFS+记忆化搜索
- Pebble Solitaire+uva+状态压缩+记忆化搜索
- 【UVA】10651-Pebble Solitaire(直接递归或者记忆化)
- uva10651 - Pebble Solitaire(记忆化搜索)
- uva10651 Pebble Solitaire(记忆化搜索)
- uva 10651 Pebble Solitaire
- UVA 10651 Pebble Solitaire
- Uva - 10651 - Pebble Solitaire
- “第二课堂”开课啦
- 百钱百鸡的问题
- poj2251 三维搜索 利用优先队列
- PHP面试题汇总
- 百度开放研究社区-电影推荐系统算法创新大赛
- 记忆化搜索 uva-10651-Pebble Solitaire
- Python笔记
- mysql书籍
- Essential C++ 笔记 (二)
- 项目管理—计划
- Linux多线程编程小结
- linux常用命令--文件和目录
- 在JAVA中如何跳出当前的多重嵌套循环
- Android应用各个开放平台市场