#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. Go语言实现:【剑指offer】包含min函数的栈

    该题目来源于牛客网<剑指offer>专题. 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数. 时间复杂度应为O(1). Go语言实现: var myList = ...

  2. 强连通分量——tarjan算法

    概念: 有向图强连通分量:在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通.如果有向图G的每两个顶点都强连 ...

  3. Matplotlib数据可视化(1):入门介绍

      1 matplot入门指南¶ matplotlib是Python科学计算中使用最多的一个可视化库,功能丰富,提供了非常多的可视化方案,基本能够满足各种场景下的数据可视化需求.但功能丰富从另一方面来 ...

  4. pytorch-- Attention Mechanism

    1. paper: Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translat ...

  5. logstash 安装插件multiline

    一.安装multiline 在使用elk 传输记录 java 日志时,如下 一个java的报错 在elk中会按每一行 产生多条记录,不方便查阅 这里修改配置文件 使用  multiline   插件 ...

  6. sys.stdout.write和print和sys.stdout.flush

    1. 先看下官方文档 """ sys.stdout.write(string) Write string to stream. Returns the number of ...

  7. 进阶之路 | 奇妙的IPC之旅

    前言 本文已经收录到我的Github个人博客,欢迎大佬们光临寒舍: 我的GIthub博客 学习清单: IPC的基础概念 多进程和多线程的概念 Android中的序列化机制和Binder Android ...

  8. redis_入门

    Redis_day01 1. NoSql 1.1 NoSql是什么 NoSQL(不仅仅是SQL not only SQL),泛指非关系型的数据库.随着互联网web2.0网站的兴起,传统的关系数据库在处 ...

  9. 方法中this指向的问题

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. 使用HSSFWorkbook导出、操作excel

    原文地址:https://www.jianshu.com/p/dd1e4f28757b 在实际开发中我们经常需要导入数据,统计数据,并且将统计好的数据导出excel,今天分享一个导出学生信息的方法. ...