动态规划专项intermediate:UVa 10981
来源:互联网 发布:ubuntu更新火狐浏览器 编辑:程序博客网 时间:2024/05/16 09:28
直接用map记录状态,1表示该状态可以达到目标状态,0表示不能。然后从左到右dfs,然后一旦得到的返回值为1,就记录路径,然后返回。记录路径也可以用map来实现。本来以为用stl会很慢,结果也只跑了19ms。
#include <iostream>#include <cstdio>#include <map>#include <string>using namespace std;string s,t;map<string,int> dp;map<string,string> path;int dfs(string st){ if(dp.count(st)) return dp[st]; if(st.size()==t.size()) { if(st==t) return 1; else return 0; } for(int i=0;i<st.size()-1;i++) { string tmp,t=st; if(st[i]=='a'&&st[i+1]=='a') tmp='b'; if(st[i]=='a'&&st[i+1]=='b') tmp='b'; if(st[i]=='a'&&st[i+1]=='c') tmp='a'; if(st[i]=='b'&&st[i+1]=='a') tmp='c'; if(st[i]=='b'&&st[i+1]=='b') tmp='b'; if(st[i]=='b'&&st[i+1]=='c') tmp='a'; if(st[i]=='c'&&st[i+1]=='a') tmp='a'; if(st[i]=='c'&&st[i+1]=='b') tmp='c'; if(st[i]=='c'&&st[i+1]=='c') tmp='c'; if(dfs(t.replace(i,2,tmp))) { path[st]=t; return dp[st]=1; } } return dp[st]=0;}void print(string st){ cout<<st<<endl; if(st!=t) print(path[st]);}int main(){ freopen("in.txt","r",stdin); int T; cin>>T; while(T--) { dp.clear(); path.clear(); cin>>s>>t; if(s.size()<t.size()) cout<<"None exist!"<<endl; else { if(!dfs(s)) cout<<"None exist!"<<endl; else { print(s); } } if(T) cout<<endl; } return 0;}
- 动态规划专项intermediate:UVa 10981
- 动态规划专项intermediate:UVa 10271
- 动态规划专项intermediate:UVa 10304
- 动态规划专项intermediate:UVa 11600
- 动态规划专项intermediate:UVa 10934
- 动态规划专项intermediate:UVa 12002
- 动态规划专项intermediate:UVa 10688
- 动态规划专项intermediate:UVa 11766
- 动态规划专项intermediate:UVa 11400
- 动态规划专项intermediate:UVa 10599
- 动态规划专项intermediate:LA 4015
- 动态规划专项intermediate:LA 4490
- 动态规划专项intermediate:LA 4327
- 动态规划intermediate:UVa 11456
- 动态规划intermediate:UVa 10239
- 动态规划intermediate:UVa 10604
- 动态规划intermediate:LA 4945
- 动态规划intermediate:LA 6042
- 网络操作模式和手机工作模式
- CF 219D (#135div.2)D. Choosing Capital for Treeland
- matlab 开始
- POJ-2662-A Walk Through the Forest
- 2013蓝桥杯预赛javaA组 错误票据
- 动态规划专项intermediate:UVa 10981
- c语言中的几个字符串输入输出函数比较
- SCI
- 约瑟夫环问题
- 【转载】我喜欢电脑的飞鸽传书
- 数组和list
- Linux下使用文件创建虚拟分区
- 我选择了linux mint 13 xfce !
- Dijkstra算法(最短单源路径)学习笔记