博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Uva 10085 - The most distant state
阅读量:6237 次
发布时间:2019-06-22

本文共 1804 字,大约阅读时间需要 6 分钟。

Problem A The Most Distant State

Input: standard input Output: standard output

Time limit: 13.333 seconds

解题思路:题目的意思是给你一个初始化的3*3 “数字拼图”,叫你找出需要移动步数最多的那个拼图的情形,而且输出移动的步骤,当然移动步数最多的比较是建立在不同的拼图情形上的。题目为特判,所以输出可能有所不同。解题思路用BFS放队列里扫描“数字拼图”中空白处的上下左右方向,将拼图中数换回位数为9位的大整数,所以共有9!个整数,有出现的将其放到set中,并不断更新移动步骤的长度和当前的拼图情形,判断set中元素的个数是否达到9!break出来输出更新后的目标拼图情形和移动步骤

 

1 #include
2 #include
3 #include
4 #include
5 #include
6 #define SIZE 9 7 #define INF 362880 8 #define MAXN 1000000 9 using namespace std; 10 11 typedef int subType[SIZE]; 12 typedef struct type{ 13 subType value; 14 string step; 15 }type; 16 17 set
visit; 18 queue
puzzle; 19 20 int dir[][2] = { { 0, -1}, { 0, 1}, {-1, 0}, { 1, 0}}; 21 string dirFlag[] = { "L", "R", "U", "D"}; 22 int store_cnt; 23 int store_num; 24 string store_string; 25 bool try_to_insert(type from) 26 { 27 int sum = 0; 28 for(int i=0; i
=0 && newx < 3 && newy >=0 && newy < 3) 65 { 66 type next; 67 memcpy(next.value , s, sizeof(subType)); 68 next.value[newz] = s[z]; 69 next.value[z] = s[newz]; 70 next.step.assign(cur.step); 71 next.step += dirFlag[d]; 72 if(try_to_insert(next)) 73 { 74 puzzle.push(next); 75 if(store_cnt == INF) 76 { 77 flag = 1; 78 break; 79 } 80 } 81 } 82 } 83 if(flag) break; 84 } 85 } 86 87 int main() 88 { 89 #ifndef ONLINE_JUDGE 90 freopen("input.txt", "r", stdin); 91 92 #endif 93 94 int T; 95 cin>>T; 96 97 for(int t=1; t<=T; ++t) 98 { 99 type input;100 for(int i=0; i
>input.value[i];103 }104 input.step = "\0";105 while(!puzzle.empty()) puzzle.pop();106 puzzle.push(input);107 Traverse();108 cout<<"Puzzle #"<

 

 

 

转载于:https://www.cnblogs.com/liaoguifa/archive/2013/05/11/3072334.html

你可能感兴趣的文章
ArcGIS Server的安装步骤
查看>>
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
查看>>
字符串截取
查看>>
进来看看吧 多学点知识不亏.......
查看>>
关于Hibernate框架的面试题
查看>>
Hdoj 1002
查看>>
paper 116:自然图像抠图/视频抠像技术梳理(image matting, video matting)
查看>>
类的析构、继承
查看>>
JNI在eclipse中出现Unresolved inclusion: <jni.h>或Type 'jint' could not be resolved等解决方法...
查看>>
Asp.Net Web配置连接字符串加密
查看>>
转 Apache Ant 实现自动化部署
查看>>
XML 基本语法
查看>>
CentOS6.5_64位系统下安装配置postfix邮件系统 启用并配置SMTP在第三方上边使用发送邮件...
查看>>
【第一天】iOS开发环境搭建
查看>>
daterangepicker日历插件使用参数注意问题
查看>>
EVA资料
查看>>
c# Unity依赖注入WebService
查看>>
range()和xrange()的区别
查看>>
基础数据类型
查看>>
站立会议第五天
查看>>