codeforces 208B Solitaire
2014-03-11 18:34
246 查看
记忆化搜索,map保存状态,
#include <cstdlib> #include <cctype> #include <cstring> #include <cstdio> #include <cmath> #include <algorithm> #include <vector> #include <string> #include <iostream> #include <sstream> #include <map> #include <set> #include <queue> #include <stack> #include <fstream> #include <numeric> #include <iomanip> #include <bitset> #include <list> #include <stdexcept> #include <functional> #include <utility> #include <ctime> using namespace std; #define PB push_back #define MP make_pair #define REP(i,n) for(int i=0;i<(n);++i) #define FOR(i,l,h) for(int i=(l);i<=(h);++i) #define DWN(i,h,l) for(int i=(h);i>=(l);--i) #define CLR(vis) memset(vis,0,sizeof(vis)) #define MST(vis,pos) memset(vis,pos,sizeof(vis)) #define MAX3(a,b,c) max(a,max(b,c)) #define MAX4(a,b,c,d) max(max(a,b),max(c,d)) #define MIN3(a,b,c) min(a,min(b,c)) #define MIN4(a,b,c,d) min(min(a,b),min(c,d)) #define PI acos(-1.0) #define INF 1000000000 #define LINF 1000000000000000000LL #define eps 1e-8 typedef long long ll; int n; int flag; map<string,int>vis; string a[55]; bool judge1(int s) { if(a[s][0]==a[s+1][0] || a[s][1]==a[s+1][1]) return true; return false; } bool judge2(int s) { if(a[s][0]==a[s+3][0] || a[s][1]==a[s+3][1]) return true; return false; } void dfs(int s) { if(s==n-1) { flag=1; return; } if(s+1<n && judge1(s)) { string pre=a[s+1]; a[s+1]=a[s]; string pos=a[s+1]; FOR(i,2,n-s-1) pos+=a[s+i]; if(!vis[pos]) { dfs(s+1); vis[pos]=1; } if(flag) return; a[s+1]=pre; } if(s+3<n && judge2(s)) { string pre=a[s+3]; a[s+3]=a[s]; string pos=a[s+1]; FOR(i,2,n-s-1) pos+=a[s+i]; if(!vis[pos]) { dfs(s+1); vis[pos]=1; } if(flag) return; a[s+3]=pre; } return; } int main() { cin>>n; DWN(i,n-1,0) cin>>a[i]; flag=0; dfs(0); if(flag) cout<<"YES\n"; else cout<<"NO\n"; return 0; }
相关文章推荐
- codeforces----208B Solitaire
- CodeForces - 208B Solitaire 【记忆化搜索】
- Codeforces 208B Solitaire
- CodeForces - 208B Solitaire
- Codeforces 460C Present(二分)
- CodeForces - 467C George and Job
- Codeforces 405C Unusual Product
- CodeForces 746D Green and Black Tea
- CodeForces 86C-Genetic engineering
- CodeForces - 248C (几何)
- Codeforces 263A. Appleman and Easy Task
- Codeforces 599C Day at the Beach(想法题,排序)
- CodeForces 686C-Robbers' watch
- codeforces 747C Servers
- CodeForces 817E Choosing The Commander题解
- CodeForces - 893
- Codeforces 377B . Preparing for the Contest【优先队列】
- Codeforces_158B
- 字典树(+DFS)——Watto and Mechanism ( CodeForces 514C )
- Codeforces 346D