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可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...
随机推荐
- Go语言实现:【剑指offer】包含min函数的栈
该题目来源于牛客网<剑指offer>专题. 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数. 时间复杂度应为O(1). Go语言实现: var myList = ...
- 强连通分量——tarjan算法
概念: 有向图强连通分量:在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通.如果有向图G的每两个顶点都强连 ...
- Matplotlib数据可视化(1):入门介绍
1 matplot入门指南¶ matplotlib是Python科学计算中使用最多的一个可视化库,功能丰富,提供了非常多的可视化方案,基本能够满足各种场景下的数据可视化需求.但功能丰富从另一方面来 ...
- pytorch-- Attention Mechanism
1. paper: Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translat ...
- logstash 安装插件multiline
一.安装multiline 在使用elk 传输记录 java 日志时,如下 一个java的报错 在elk中会按每一行 产生多条记录,不方便查阅 这里修改配置文件 使用 multiline 插件 ...
- sys.stdout.write和print和sys.stdout.flush
1. 先看下官方文档 """ sys.stdout.write(string) Write string to stream. Returns the number of ...
- 进阶之路 | 奇妙的IPC之旅
前言 本文已经收录到我的Github个人博客,欢迎大佬们光临寒舍: 我的GIthub博客 学习清单: IPC的基础概念 多进程和多线程的概念 Android中的序列化机制和Binder Android ...
- redis_入门
Redis_day01 1. NoSql 1.1 NoSql是什么 NoSQL(不仅仅是SQL not only SQL),泛指非关系型的数据库.随着互联网web2.0网站的兴起,传统的关系数据库在处 ...
- 方法中this指向的问题
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 使用HSSFWorkbook导出、操作excel
原文地址:https://www.jianshu.com/p/dd1e4f28757b 在实际开发中我们经常需要导入数据,统计数据,并且将统计好的数据导出excel,今天分享一个导出学生信息的方法. ...