new hdoj 1515 (pe)(但是我可以做出来了)(搜索,注意剪枝)
2013-05-05 01:16
375 查看
#include<iostream> #include<stdio.h> #include<string> using namespace std; #define MAX 100 char a[MAX]; char b[MAX]; char c[MAX];//出战的结果 char s[MAX];//栈 char path[MAX]; int akey=-1;//指针指的是当前的元素 int ckey=-1; int skey=-1; int len; int inum=0; int onum=0; int same() { int i=0; for(i=0;i<len;i++) { if(c[i]!=b[i]) return 0; } return 1; } void out() { int i=0; for(i=0;i<2*len-1;i++) { printf("%c ",path[i]); } printf("%c\n",path[2*len-1]); } void bfs(int level) { //如果到最后一层,输入,同时不要进入下一层 if(level>=len*2) { //如果两个字符串相同 if(same()) { out(); } } else { //进站 path[level]='i'; skey++;akey++;inum++; if(inum<=len) { s[skey]=a[akey]; bfs(level+1); } //保护现场 path[level]=' '; s[skey]=' '; skey--;akey--;inum--; //出战 path[level]='o'; ckey++;onum++; c[ckey]=s[skey]; s[skey]=' '; skey--; if(onum<=inum&&c[ckey]==b[onum-1]) bfs(level+1); path[level]=' '; skey++; s[skey]=c[ckey]; c[ckey]=' '; ckey--;onum--; } } void init() { akey=-1;//指针指的是当前的元素 ckey=-1; skey=-1; len; inum=0; onum=0; a[0]='\0'; b[0]='\0'; c[0]='\0'; s[0]='\0'; path[0]='\0'; } int main() { //freopen("in.txt","r",stdin); while(scanf("%s %s",a,b)!=EOF) { len=strlen(a); printf("[\n"); bfs(0); printf("]\n"); } return 0; }
相关文章推荐
- HDOJ 1010 迷宫搜索 剪枝
- new hdoj 1072(很经典的搜索)(费用需要慎重)
- 文章--笔记本蓝牙可以搜索到手机,但是怎么连接不了?
- [模块]可以搜索内存中存在的PE结构
- 网页打不开(403 Forbidden)但是搜索界面可以看到预览解决办法
- HDOJ 4277 USACO ORZ 搜索 剪枝
- Android版凯立德,可以正常导航,但是无法搜索地名的问题
- UVA 1593 Alignment of Code 注意格式问题。。以及可以用stringstream解决但是我没用
- Ningbo [1217] Dinner(简单题,但是注意输出,pe3遍)
- HDU1017 注意下输出格式就可以了,我因此PE了两次啊!伤不起啊!
- C++学习之使用new的注意事项
- vue-cli起的webpack项目 用localhost可以访问,但是切换到ip就不可以访问
- Croc Champ 2013 - Round 2 (Div. 2 Edition) 贪心+ 搜索+剪枝 + 数学
- 注意广度搜索时访问过的点如何标记
- 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-可以用软件自带NC工具驱动但是程序无法让电机转动怎么办
- j2e中servlet转发action出现错误但是转发jsp可以
- (new) hdoj 1003(dp)(很经典的题目)
- iis6,域名可以正常访问,但是 输入IP却不能访问
- win8笔记本无法搜索wifi信号找不到WLAN该 wifi共享特别注意的服务
- hdu 4619 warm up 2 并查集或搜索都可以做出来的题 2013多校联合训练第二场