UVA10085-不知错在何处
#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-不知错在何处的更多相关文章
- 谁偷了我的热更新?Mono,JIT,iOS
前言 由于匹夫本人是做游戏开发工作的,所以平时也会加一些玩家的群.而一些困扰玩家的问题,同样也困扰着我们这些手机游戏开发者.这不最近匹夫看自己加的一些群,常常会有人问为啥这个游戏一更新就要重新下载,而 ...
- Writing Clean Code 读后感
最近花了一些时间看了这本书,书名是 <Writing Clean Code ── Microsoft Techniques for Developing Bug-free C Programs& ...
- A 最熟悉的陌生人 (纪念当年就读的梅州市江南高级中学)
最熟悉的陌生人 作者:张慧桥 “枪与玫瑰” 就象瘟98有时会死机天有时会下雨枪有时会走火美国战机有时会掉下来那样,我上网聊天也只是个偶然. 都是栀子那死丫头惹的祸.让每天都觉得是情人节的我那天我自己都 ...
- 高质量C++/C编程指南(林锐)
推荐-高质量C++/C编程指南(林锐) 版本/状态 作者 参与者 起止日期 备注 V 0.9 草稿文件 林锐 2001-7-1至 2001-7-18 林锐起草 V 1.0 正式文件 林锐 20 ...
- Machine Learning Algorithms Study Notes(2)--Supervised Learning
Machine Learning Algorithms Study Notes 高雪松 @雪松Cedro Microsoft MVP 本系列文章是Andrew Ng 在斯坦福的机器学习课程 CS 22 ...
- Machine Learning Algorithms Study Notes(1)--Introduction
Machine Learning Algorithms Study Notes 高雪松 @雪松Cedro Microsoft MVP 目 录 1 Introduction 1 1.1 ...
- 移除首页->重回首页
之前发布了一篇文章<订餐系统之获取淘宝外卖订单>,因为是关于淘宝外卖的,所以文中出现这个词时,都加了链接,还设置了 target='_blank',就是为了让看的人方便点击,查看.后来,博 ...
- 高质量C++[转]
高质量C++/C编程指南 文件状态 [ ] 草稿文件 [√] 正式文件 [ ] 更改正式文件 文件标识: 当前版本: 1.0 作 者: 林锐 博士 完成日期: 2001年7月24日 版 本 ...
- 20145304 刘钦令 Java程序设计第二周学习总结
20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...
随机推荐
- layui表格增删改查与上传图片+Api
API 控制器1 主要用于增删改查已经反填数据查询 using System; using System.Collections.Generic; using System.Data.SqlClie ...
- SPH液面重构过程中的问题
使用粒子方法进行流体特效模拟需要进行液面重构,构造出流体的自由表面,液面重构方法也是一个独立的研究方向,针对其的研究已经有了很多成果,包括液面的平滑度.精度和并行效率等. 在这里,主要是记录一下我在液 ...
- javascript 客户端webSocket示例
//html <script> // 初始化一个 WebSocket 对象 var ws = new WebSocket("ws://localhost:9998/echo&qu ...
- 【Java并发工具类】Java并发容器
前言 Java并发包有很大一部分都是关于并发容器的.Java在5.0版本之前线程安全的容器称之为同步容器.同步容器实现线程安全的方式:是将每个公有方法都使用synchronized修饰,保证每次只有一 ...
- linux 统计文件夹下文件,文件夹,所有个数
统计某文件夹下文件的个数 ls -l |grep "^-"|wc -l 统计某文件夹下目录的个数 ls -l |grep "^d"|wc -l 统计文件夹下文件 ...
- centos 7 设置 本地更新源
#yum-config-manager --disable \*--屏弊所有更新源#mkdir /r7iso# cd /run/media/{用户名}/CentOS\ 7\ x86_64/ #cp - ...
- typescript 点滴
1 extend的用法 const x = extend({ a: 'hello' }, { b: 42 }); 2只有在d.ts,你才可以使用 export as 这样子的语法.而且必须有name ...
- 解决打开的小窗口回调参数的问题,layui
问题: 给用户新增优惠券,单个用户,单个优惠券,新增的话,用输入窗点击事件,点击后弹出一个子窗口列表页,选择数据后,点击确定,信息传回父窗口,主要是解决传值的问题. 解决思路: ...
- linux--解决celery消息中间件带来的一系列问题
启动celery定时任务 1.celery -A OpsManage beat -l info -S django 2.celery -A OpsManage worker -l info 此时消息中 ...
- Windows10官方原版系统下载安装制作方法
Windows10官方原版系统下载安装制作方法 去官网下载系统安装程序 点进去 https://www.microsoft.com/zh-cn/software-download/windows10 ...