栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 2477 Magic Cube

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 2477 Magic Cube

#include <cstdio>#include <cstring>#include <algorithm>#include <cctype>using namespace std;char maz[54];char readchar(){    char ch=0;    while(!isalpha(ch)){        ch=getchar();    }    return ch;}const int cell[6][9]={    {4,0,1,2,3,5,6,7,8},{22,9,10,11,21,23,33,34,35},{25,12,13,14,24,26,36,37,38},    {28,15,16,17,27,29,39,40,41},{31,18,19,20,30,32,42,43,44},{49,45,46,47,48,50,51,52,53}};const int change[12][20]={         {11,23,35,34,33,21, 9,10,51,48,45,36,24,12, 6, 3, 0,20,32,44},         { 9,10,11,23,35,34,33,21,36,24,12, 6, 3, 0,20,32,44,51,48,45},         {14,13,26,38,37,36,24,12,45,46,47,39,27,15, 8, 7, 6,11,23,35},         {12,24,13,14,26,38,37,36,39,27,15, 8, 7, 6,11,23,35,45,46,47},         {17,29,41,40,39,27,15,16,47,50,53,42,30,18, 2, 5, 8,14,26,38},         {15,16,17,29,41,40,39,27,42,30,18, 2, 5, 8,14,26,38,47,50,53},         {18,19,20,32,44,43,42,30,53,52,51,33,21, 9, 0, 1, 2,17,29,41},         {42,30,18,19,20,32,44,43,33,21, 9, 0, 1, 2,17,29,41,53,52,51},         { 0, 1, 2, 5, 8, 7, 6, 3,12,13,14,15,16,17,18,19,20, 9,10,11},         { 6, 3, 0, 1, 2, 5, 8, 7,15,16,17,18,19,20, 9,10,11,12,13,14},         {45,46,47,50,53,52,51,48,44,43,42,41,40,39,38,37,36,35,34,33},         {51,48,45,46,47,50,53,52,41,40,39,38,37,36,35,34,33,44,43,42}};bool ok(){    for(int i=0;i<6;i++){        for(int j=1;j<9;j++){ if(maz[cell[i][j]]!=maz[cell[i][0]])return false;        }    }    return true;}void rot(int ind){    char tmp[54];    copy(maz,maz+54,tmp);    for(int i=0;i<20;i++){        tmp[change[ind][i]]=maz[change[ind^1][i]];    }    copy(tmp,tmp+54,maz);}int ans[6];bool dfs(int cnt){    if(cnt<=0)return ok();    char tmp[54];    copy(maz,maz+54,tmp);    for(int i=0;i<12;i++){        rot(i);        ans[cnt]=i;        if(dfs(cnt-1))return true;        copy(tmp,tmp+54,maz);    }    return false;}int main(){    int T;    scanf("%d",&T);    for(int ti=1;ti<=T;ti++){        for(int i=0;i<54;i++)maz[i]=readchar();        for(int i=0;i<=6;i++){ if(i==6){     puts("-1");     break; } else if(dfs(i)){     printf("%dn",i);     for(int j=i;j>0;j--){         printf("%d %dn",ans[j]/2,ans[j]&1?-1:1);     }     break; }        }    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/367191.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号