链接:

http://poj.org/problem?id=1184

http://acm.hust.edu.cn/vjudge/contest/view.action?cid=88230#problem/B   (密码:0817)

不同的代码风格,这种在搜时有多种选择的,写了函数感觉看着也方便些, 借鉴

搜索的时候可以去除一些无用的状态,可以发现一个点的值(2-5)如果想要改变那么光标必须在该点处,所以当光标在2-5位置时候,必须要要把值变为与目标位置处一样才可以移动。

代码:

#include<stdio.h>
#include<string.h>
#include<cstdlib>
#include<algorithm>
#include<iostream>
#include<vector>
#include<queue>
#include<cmath>
using namespace std;
#define INF 0x3fffffff
#define N 205
bool vis[][]; struct node
{
int step, num, k; ///k代表的是光标所在的位置
node (int step=, int num=, int k=):step(step), num(num), k(k) {}
}; void GetNum(int A,int c[])
{
int k = ;
while(k)
{
c[k] = A%;
A /= ;
k--;
}
} node OpNum(int c[], int i, node p)
{
if(i==)
swap(c[], c[p.k]);
else if(i==)
swap(c[], c[p.k]);
else if(i== && c[p.k]!=)
c[p.k]++;
else if(i== && c[p.k]!=)
c[p.k]--;
else if(i== && p.k!=)
p.k--;
else if(i== && p.k!=)
p.k++; int k=;
p.step ++;
p.num = ; while(k<=)
p.num = p.num * + c[k++]; return p;
}
int BFS(int a, int b)
{
int c[], d[];
node p, q; GetNum(b, d);
memset(vis, false, sizeof(vis));
vis[][a] = true; queue<node>Q;
Q.push(node(, a, )); while( Q.size() )
{
p = Q.front(); Q.pop(); if(p.num==b) return p.step; for(int i=; i<; i++)
{
GetNum(p.num, c);
if(p.k>= && p.k<= && (i== || i==) && c[p.k]!=d[p.k]) ///很重要,但我还没理解为什么,等等要问问
continue; q = OpNum(c, i, p); if(!vis[q.k][q.num])
{
vis[q.k][q.num] = true;
Q.push(q);
}
}
}
return -;
} int main()
{
int A, B;
while(scanf("%d%d", &A, &B)!=EOF)
{
printf("%d\n", BFS(A, B));
}
return ;
}

(广搜)聪明的打字员 -- POJ --1184的更多相关文章

  1. (广搜)Dungeon Master -- poj -- 2251

    链接: http://poj.org/problem?id=2251 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2137 ...

  2. 双向广搜 POJ 3126 Prime Path

      POJ 3126  Prime Path Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16204   Accepted ...

  3. 广搜+打表 POJ 1426 Find The Multiple

    POJ 1426   Find The Multiple Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 25734   Ac ...

  4. POJ 3984 迷宫问题 记录路径的广搜

    主要是学一下如何在广搜中记录路径:每找到一个点我就记录下这个点是由那个点得来的,这样我找到最后个点后,我就可以通过回溯得到我走过的路径,具体看代码吧~ #include<cstdio> # ...

  5. 广搜,深搜,单源最短路径,POJ(1130),ZOJ(1085)

    题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=85 http://poj.org/problem?id=1130 这 ...

  6. poj 3984:迷宫问题(广搜,入门题)

    迷宫问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7635   Accepted: 4474 Description ...

  7. poj 3278:Catch That Cow(简单一维广搜)

    Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 45648   Accepted: 14310 ...

  8. poj 3026 Borg Maze 最小生成树 + 广搜

    点击打开链接 Borg Maze Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7097   Accepted: 2389 ...

  9. POJ 2251 Dungeon Master(广搜,三维,简单)

    题目 简单的3d广搜,做法类似与 hdu 的 胜利大逃亡 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<str ...

随机推荐

  1. string类的简要实现

    #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #inc ...

  2. debian8下pgsql的主备同步热切手动脚本

    9以后,通过流复制直接做 主:192.168.1.111 从:192.168.1.222 需要在postgres帐号下先配置ssh互信,双机都配置 sh-keygen -t rsa ssh-copy- ...

  3. debian的甘特图工具

    sudo apt-get install planner

  4. C语言:宽字符集操作函数(unicode编码)

    C语言:宽字符集操作函数(unicode编码) 字符分类: 宽字符函数 普通C函数描述 iswalnum() isalnum() 测试字符是否为数字或字母 iswalpha() isalpha() 测 ...

  5. 黄聪:360浏览器、chrome开发扩展插件教程(1)开发Chrome Extenstion其实很简单

    转载:http://www.cnblogs.com/walkingp/archive/2011/03/31/2001628.html Chrome的更新速度可以说前无古人,现在我每天开机的第一件事就是 ...

  6. android基于adb的性能测试

    应用CPU.内存.点亮.流量等数据,是应用测试的重要性能指标.本次以UC浏览器为例. 当前UC测试中,每个正式版本都会专门做一轮性能测试,测试数据包括: 1小时内存数据 1小时CPU数据 24小时电量 ...

  7. Web Api HelpPage

    为了方面APP开发人员,服务端的接口都应当提供详尽的API说明.但每次有修改,既要维护代码,又要维护文档,一旦开发进度紧张,很容易导致代码与文档不一致. Web API有一个Help Page插件,可 ...

  8. liquibase使用

    1. 创建表 drop database if exists mybatis; create database mybatis; use mybatis; create table mybatis.C ...

  9. 【python 】Requests 库学习笔记

    概览 实例引入 import requests response = requests.get('https://www.baidu.com/') print(type(response)) prin ...

  10. 使用通配符配置action

    建立struts2wildcard项目,此实例基本仿照前面前面第7点的实例改写而成.为了使用通配符,只需要改写配置文件即可.此实例未使用通配时的配置文件如下: <action name=&quo ...