UVALive 6124 Hexagon Perplexagon
来源:互联网 发布:java 高级编程 书籍 编辑:程序博客网 时间:2024/06/05 21:32
直接进行搜索即可,注意细节。 有更简便的写法但怕出错所以写得很长。
#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>#include<vector>using namespace std;struct node{ int a[6];}he[7];bool flag;int ans[10];int tun[10];bool vis[10];void dfs(int pos){ if(flag)return ; //cout<<pos<<endl; if(pos==7) { flag=1; return ; } if(pos==1) { for(int i=0;i<7;i++) { if(flag)return ;if(vis[i]) continue; //cout<<"kk"<<endl; for(int j=0;j<6;j++) { //cout<<he[i].a[j]<<endl; if(he[i].a[j]==1) { tun[i]=(j-3+6)%6; vis[i]=1; ans[pos]=i; dfs(pos+1); vis[i]=0; break; } } } } if(pos==2) { for(int i=0;i<7;i++) { if(flag)return ;if(vis[i]) continue; for(int j=0;j<6;j++) { if(he[i].a[j]==he[ans[0]].a[(tun[ans[0]]+1)%6]&&he[i].a[(j+1)%6]==he[ans[1]].a[(tun[ans[1]]+2)%6]) { tun[i]=(j-4+6)%6; ans[pos]=i; vis[i]=1; dfs(pos+1); vis[i]=0; break; } } } } if(pos==3) { for(int i=0;i<7;i++) { if(flag)return ;if(vis[i]) continue; for(int j=0;j<6;j++) { if(he[i].a[j]==he[ans[0]].a[(tun[ans[0]]+2)%6]&&he[i].a[(j+1)%6]==he[ans[2]].a[(tun[ans[2]]+3)%6]) { tun[i]=(j-5+6)%6; ans[pos]=i; vis[i]=1; dfs(pos+1); vis[i]=0;break; } } } } if(pos==4) { for(int i=0;i<7;i++) { if(flag)return ;if(vis[i]) continue; for(int j=0;j<6;j++) { if(he[i].a[j]==he[ans[0]].a[(tun[ans[0]]+3)%6]&&he[i].a[(j+1)%6]==he[ans[3]].a[(tun[ans[3]]+4)%6]) { tun[i]=(j-6+6)%6; ans[pos]=i; vis[i]=1; dfs(pos+1); vis[i]=0;break; } } } } if(pos==5) { for(int i=0;i<7;i++) { if(flag)return ;if(vis[i]) continue; for(int j=0;j<6;j++) { if(he[i].a[j]==he[ans[0]].a[(tun[ans[0]]+4)%6]&&he[i].a[(j+1)%6]==he[ans[4]].a[(tun[ans[4]]+5)%6]) { tun[i]=(j-1+6)%6; ans[pos]=i; vis[i]=1; dfs(pos+1); vis[i]=0; break; } } } } if(pos==6) { for(int i=0;i<7;i++) { if(flag)return ;if(vis[i]) continue; for(int j=0;j<6;j++) { if(he[i].a[(j-1+6)%6]==he[ans[1]].a[(tun[ans[1]]+4)%6]&&he[i].a[j]==he[ans[0]].a[(tun[ans[0]]+5)%6]&&he[i].a[(j+1)%6]==he[ans[5]].a[(tun[ans[5]]+6)%6]) { tun[i]=(j-2+6)%6; ans[pos]=i; vis[i]=1; dfs(pos+1); vis[i]=0; break; } } } }}int main(){ int n; int t; scanf("%d",&t); for(int cas=1;cas<=t;cas++) { flag=0; memset(vis,0,sizeof(vis)); for(int i=0;i<7;i++) { for(int j=0;j<6;j++) { scanf("%d",&he[i].a[j]); } } ///qidian for(int i=0;i<7;i++) { if(flag) break; for(int j=0;j<6;j++) { if(he[i].a[j]==1) { tun[i]=j; vis[i]=1; ans[0]=i; dfs(1); vis[i]=0; break; } } } printf("Case %d:",cas); if(flag==0)puts(" No solution"); else { for(int i=0;i<7;i++) { printf(" %d",ans[i]); } puts(""); } }}
0 0
- UVALive 6124 Hexagon Perplexagon
- BNU Hexagon Perplexagon - from lanshui_Yang
- Hexagon
- uva317 - Hexagon
- hexagon绝对路径
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- C++中虚函数和非虚函数重载在继承时的区别
- dialog相关
- oracle 异常关闭造成 -重启服务仍无法正常连接 -windows处理
- SVN提交.a文件
- Spring 入门教程(三) 注入和自动装配
- UVALive 6124 Hexagon Perplexagon
- 怀念张筑生
- Java进行3DES加密解密
- 回调函数
- 产生冠军 拓扑定理(如何对字符串进行编号)
- perl脚本的简单调试方法
- 在C++中子类继承和调用父类的构造函数方法
- 简单图书馆系统(面向对象编程思想)
- cocos2d-x开发日志09 —— Vector