ZOJ1008 Gnome Tetravex
Posted zhanglichen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZOJ1008 Gnome Tetravex相关的知识,希望对你有一定的参考价值。
DFS+剪枝~
#include<bits/stdc++.h> using namespace std; int a[30][4]; int N; int cnt; int c[30]; int p[30]; unordered_map<long long,int> pos; bool dfs (int v) { if (v==N*N) return true; for (int i=0;i<cnt;i++) { if (c[i]==0) continue; if (v%N!=0&&a[p[v-1]][1]!=a[i][3]) continue; if (v/N!=0&&a[p[v-N]][2]!=a[i][0]) continue; p[v]=i; c[i]--; if (dfs(v+1)) return true; else c[i]++; } return false; } int main () { int T=0; while (scanf("%d",&N)&&N) { pos.clear(); cnt=0; int u,d,l,r,k; for (int i=0;i<N*N;i++) { scanf("%d %d %d %d",&u,&r,&d,&l); for (k=0;k<cnt;k++) { if(u==a[k][0]&&r==a[k][1]&&d==a[k][2]&&l==a[k][3]) break; } if (k==cnt) { cnt++; a[k][0]=u; a[k][1]=r; a[k][2]=d; a[k][3]=l; c[k]=1; } else c[k]++; } if (T!=0) printf(" "); T++; if (dfs(0)) printf ("Game %d: Possible ",T); else printf ("Game %d: Impossible ",T); } return 0; }
以上是关于ZOJ1008 Gnome Tetravex的主要内容,如果未能解决你的问题,请参考以下文章