#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<map>
#include<queue>
#include<string>
using namespace std;
typedef struct state STA;
struct state
{
int st[][];
int stnum;
int step;
string way;
bool operator< (const state p)const
{
return this->step<p.step;
}
}; const int dx[]={,-,,};
const int dy[]={,,,-};
const char Wy[]={'D','U','R','L'}; int ans[][];
string answay;
int ans_step; map<int,bool> cyc;
queue<STA> psd; int bfs(STA start)
{
int nowstep=start.step;
int nowstate=start.stnum;
int nowst[][];
memcpy(nowst,start.st,sizeof(start.st));
string noway=start.way;
while()
{
cyc[nowstate]=true;
//cout<<noway<<endl;
if(nowstep>ans_step)
{
ans_step=nowstep;
memcpy(ans,nowst,sizeof(nowst));
answay=noway;
}
int x,y; int ok=;
for(x=;x<;++x)
{
for(y=;y<;++y)
if(nowst[x][y]==){ok=;break;}
if(ok)break;
}
//
STA m;
for(int i=;i<;++i)
{
int newx=x+dx[i];
int newy=y+dy[i];
ok=(newx>=&&newx<&&newy>=&&newy<);
if(!ok)continue;
memcpy(m.st,nowst,sizeof(m.st));
m.st[x][y]=nowst[newx][newy];
m.st[newx][newy]=;
m.stnum=;
for(int k=;k<;++k)
for(int j=;j<;++j)
m.stnum=m.stnum*+m.st[k][j];
if(cyc[m.stnum]==true)continue;
m.step=nowstep+;
//m.way=noway.append(1,Wy[i]);
m.way=noway;
(m.way).append(,Wy[i]);
psd.push(m);
}
if(psd.empty())break;
m=psd.front();psd.pop();
//
nowstep=m.step;
nowstate=m.stnum;
memcpy(nowst,m.st,sizeof(m.st));//st[][]
noway=m.way;//string
}
return ;
} int main()
{
freopen("input.txt","r",stdin);
freopen("ans.txt","w",stdout);
int n;
scanf("%d",&n);
for(int c=;c<=n;c++)
{
ans_step=;
cyc.clear();
//
STA m;
m.way="";
m.step=;
int sum=;
for(int i=;i<;++i)
{
for(int k=;k<;++k)
{
scanf("%d",&m.st[i][k]);
sum=sum*+m.st[i][k];
}
}
m.stnum=sum;
//
bfs(m);
//
printf("Puzzle #%d\n",c);
for(int i=;i<;++i)
printf("%d %d %d\n",ans[i][],ans[i][],ans[i][]);
cout<<answay<<"\n"<<endl;
}
return ;
}

下面是Udebug提供的查错:

样例:


我的结果:

Puzzle #

DDRUURDLLDRRULLURRDLDLUURDDLUUR

Puzzle #

DDRUULLDDRURULLDDRURULLDDRRUULL

Puzzle #

DDLUURDDLLUURDLURRDDLURDLLUURRD

Puzzle #

DRUULDDRRUULDRULLDDRULDRRUULLDD

Puzzle #

DRUULDDRUULDDRULLDRULURDDRUULD

Puzzle #

DLUURDDLLUURDLURRDDLURDLLUURRDD

Puzzle #

UURDDRULLURRDLLDRRULULDDRUULDDR

Puzzle #

UURDDLLUURDRDLLUURDRDLLUURRDDLL

Puzzle #

UULDDRUULLDDRULDRRUULDRULLDDRRU

正确答案:

Puzzle #

DDRUULDDRRUULDRULLDDRULDRRUULLD

Puzzle #

DDRULLURRDLLDRRULULDDRUULDDRRUU

Puzzle #

DDLUULDRRDLLURRULLDRDRUULDDRUUL

Puzzle #

URDRDLULDRUURDDLULURRDLLURRDLDL

Puzzle #

DRULLURRDLLDRRULULDDRUULDDRRUU

Puzzle #

ULDRDLULDRUURDDLULURRDLLURRDLDR

Puzzle #

UURDDLUURRDDLURDLLUURDLURRDDLLU

Puzzle #

UURDLLDRRULLURRDLDLUURDDLUURRDD

Puzzle #

UULDDLURRULLDRRDLLURURDDLUURDDL

UVA10085-不知错在何处的更多相关文章

  1. 谁偷了我的热更新?Mono,JIT,iOS

    前言 由于匹夫本人是做游戏开发工作的,所以平时也会加一些玩家的群.而一些困扰玩家的问题,同样也困扰着我们这些手机游戏开发者.这不最近匹夫看自己加的一些群,常常会有人问为啥这个游戏一更新就要重新下载,而 ...

  2. Writing Clean Code 读后感

    最近花了一些时间看了这本书,书名是 <Writing Clean Code ── Microsoft Techniques for Developing Bug-free C Programs& ...

  3. A 最熟悉的陌生人 (纪念当年就读的梅州市江南高级中学)

    最熟悉的陌生人 作者:张慧桥 “枪与玫瑰” 就象瘟98有时会死机天有时会下雨枪有时会走火美国战机有时会掉下来那样,我上网聊天也只是个偶然. 都是栀子那死丫头惹的祸.让每天都觉得是情人节的我那天我自己都 ...

  4. 高质量C++/C编程指南(林锐)

    推荐-高质量C++/C编程指南(林锐) 版本/状态 作者 参与者 起止日期 备注 V 0.9 草稿文件 林锐   2001-7-1至 2001-7-18 林锐起草 V 1.0 正式文件 林锐   20 ...

  5. Machine Learning Algorithms Study Notes(2)--Supervised Learning

    Machine Learning Algorithms Study Notes 高雪松 @雪松Cedro Microsoft MVP 本系列文章是Andrew Ng 在斯坦福的机器学习课程 CS 22 ...

  6. Machine Learning Algorithms Study Notes(1)--Introduction

    Machine Learning Algorithms Study Notes 高雪松 @雪松Cedro Microsoft MVP 目 录 1    Introduction    1 1.1    ...

  7. 移除首页->重回首页

    之前发布了一篇文章<订餐系统之获取淘宝外卖订单>,因为是关于淘宝外卖的,所以文中出现这个词时,都加了链接,还设置了 target='_blank',就是为了让看的人方便点击,查看.后来,博 ...

  8. 高质量C++[转]

    高质量C++/C编程指南 文件状态 [  ] 草稿文件 [√] 正式文件 [  ] 更改正式文件 文件标识: 当前版本: 1.0 作    者: 林锐 博士 完成日期: 2001年7月24日 版 本  ...

  9. 20145304 刘钦令 Java程序设计第二周学习总结

    20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...

随机推荐

  1. 1. 学习Linux操作系统

    1.熟练使用Linux命令行(鸟哥的Linux私房菜.Linux系统管理技术手册) 2.学会Linux程序设计(UNIX环境高级编程) 3.了解Linux内核机制(深入理解LINUX内核) 4.阅读L ...

  2. MySQL :LAST_INSERT_ID()函数总结

    作用:当对table进行insert操作时,返回具有Auto_increment(自动增长)特性的属性列的最新值. 该函数的特点 1.每当断开本次连接之后又重新连接时,该函数的返回值会被重置为0. 2 ...

  3. 怎么理解Laravel的核心架构

    使用过larave框架的朋友都知道laravel框架里面除了提供一些基本的功能(如控制器.视图.模型)之外,还有中间件.门面.契约等,这些东西是如何在laravel框架运用起来的呢?今天就和大家详聊一 ...

  4. Windows下无法颜色转义

    只需在最前面添加 import os os.system("") 参考文献:https://blog.csdn.net/ytzlln/article/details/8194524 ...

  5. Python学习(杂)

    Python学习 两个for 循环同时输出+正则文章 zip(list1,list2) zip函数同时便利两个列表 import sys import requests import re from ...

  6. NCE L3

    单词 课文

  7. mysql删除索引

    删除索引 删除索引可以使用ALTER TABLE或DROP INDEX语句来实现.DROP INDEX可以在ALTER TABLE内部作为一条语句处理,其格式如下: drop index index_ ...

  8. Linux上安装软件

    Linux发行版的两大系列 debian:代表的比如Ubuntu,软件包管理工具apt.apt-get.dpkg,软件包名.deb redhat:代表的比如CentOS(所以在VMware上安装Cen ...

  9. 常量, char[], const char[], char*, const char*, char* const以及const char* const的详解

    注意,这里用char类型只是举了一个例子,其他的int之类的也通用. 1: 常量: 例子: char str[] = "Hello world!"; char ch = 'a'; ...

  10. spark集群

    https://blog.csdn.net/boling_cavalry/article/details/86747258 https://www.cnblogs.com/xuliangxing/p/ ...