#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. 2020牛客寒假算法基础集训营4 C : 子段乘积

    C:子段乘积 考察点 : 线段树,尺取,乘法逆元 坑点 : 区间要做到不重不漏, long long 侃侃 : 这道题在比赛是写的尺取,但是写了半天发现不好处理除 0 问题(浮点错误),需要用到乘法逆 ...

  2. C++:析构函数的调用时机

    结论:只有当类的某个实例化对象的构造函数执行完毕,而且当该对象退出作用域时,才会执行析构函数. 如果在执行构造函数的过程中抛出了异常,就不会调用析构函数 上测试代码: class Test { pub ...

  3. window10 vs2013 SIFTGPU

    碰到的问题: 1.一大推语法错误: 所有For_EACH_OCTAVE的地方都出现了语法错误.后来查找了一下For_EACH_OCTAVE是个啥,发现是一个宏定义,也不知道宏定义定义的好好的,为啥会编 ...

  4. [Python]获取字典所有值

    方法一:Key Value 直接获取 databases = {1: 'Student', 2: 'School'} for k,v in databases.items(): print(k,v) ...

  5. React之props、state和render函数的关系

    1.当组件中的state或者props发生改变的的时候,render函数就会被重新执行 2.当父组件的render函数被运行时,它的子组件的render都将被重新运行一次 3.子组件作为父组件里的一个 ...

  6. oracle-11g-R2监听文件配置

    客户端连接oracle数据库时出现如下错误: Listener refused the connection with the following error: ORA-, TNS:listener ...

  7. SQL Server 2019 安装教程

    SQL Server 2019 安装教程 下载安装SQL: 1.下载SQL Server 2019 Developer 官方网址:下载地址. 2.下拉选择免费版本,直接点击下载(别问,问就是家境贫寒

  8. 分形的奥秘!分形着色器!shader 编程入门实战 ! Cocos Creator!

    极致的数学之美! 什么是分形? "一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状" 简单来说,分形(fractal)就像这个doge表情包 ...

  9. WebStorm新建JS文件、CSS文件时自动生成文件注释

    WebStorm 是jetbrains公司旗下一款优秀的前端开发工具.随着现在大型项目模块越来越多,参与人员也越来越多,实际项目中经常需要明确文件用途和文件的归属,所以创建文件时添加文件注释是一种必要 ...

  10. Java软件工程师技能图谱

    原文链接:Java软件工程师技能图谱 最近在考虑"拥有怎样的技能才能算一名合格的java软件工程师呢?"这个问题.碰巧在github发现一个很棒的开源项目--程序员技能图谱.@Zh ...