2016-05-24

算法:搜索(骑士问题)from hihocoder

简单的bfs

#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
struct point
{
    int x,y;
    point(){}
    point(int xx,int yy)
    {
        x=xx;y=yy;
    }
};
int step[4][10][10];
int dirx[8]={-2,-1,1,2,2,1,-1,-2};
int diry[8]={-1,-2,-2,-1,1,2,2,1};
void bfs(int ord,point cur)
{
    int i,x,y,dx,dy;
    queue<point> q;
    q.push(cur);
    while (!q.empty())
    {
        q.pop();
        x=cur.x;y=cur.y;
        for (i=0;i<8;i++)
        {
            dx=dirx[i];dy=diry[i];
            if (x+dx>=1&&x+dx<=8&&y+dy>=1&&y+dy<=8&&step[ord][x+dx][y+dy]==-1)
            {
                point temp(x+dx,y+dy);
                q.push(temp);
                step[ord][x+dx][y+dy]=step[ord][x][y]+1;
            }
        }
        cur=q.front();
    }
}
int main()
{
    int t,i,j,k,ans,sum,x,y;
    char str[5];
    scanf("%d",&t);
    while (t--)
    {
        for (i=1;i<=3;i++)
        {
            scanf("%s",str);
            x=str[0]-64;
            y=str[1]-48;
            for (j=0;j<10;j++)
                for (k=0;k<10;k++)
                    step[i][j][k]=-1;
            step[i][x][y]=0;
            point start;
            start.x=x;start.y=y;
            bfs(i,start);
        }
        ans=10000;
        for (i=1;i<=8;i++)
            for (j=1;j<=8;j++)
            {
                sum=0;
                for (k=1;k<=3;k++) sum+=step[k][i][j];
                if (sum<ans) ans=sum;
            }
        printf("%d\n",ans);
    }
    return 0;
}
时间: 2024-10-17 04:28:32

2016-05-24的相关文章

2016.05互金平台移动端影响力50强榜单报告!

(文章来源:盈灿咨询) 6月21日下午,盈灿咨询在京举办互金平台移动端影响力报告暨2015网贷蓝皮书出版发布会,首次独家发布了<互金平台移动端影响力榜单TOP50>,北京大学汇丰商学院中小企业研究中心执行主任王家卓.网贷之家首席研究员&盈灿咨询总经理马骏.盈灿咨询副总经理于百程.爱钱进CEO杨帆等嘉宾出席了本次活动并做主题分享. 据悉,该报告选取了300余家互金平台5月的移动端数据,以平台在移动端的推广目的和移动互联网特点为支点,以指标.评分.分析为撬棍,展示了目前行业内互金平台的移动

2016/10/24 笔记总结

1.css3 动画:通过设置图片的opacity 来到hover时的动画: .nr_mod_service_hp_bottom_ts .inner .item .pic a .d_img { filter: alpha(opacity=100); opacity: 1; transition: 0.3s; -webkit-transition: 0.3s; -moz-transition: 0.3s; -ms-transition: 0.3s; -o-transition: 0.3s; } .n

2016/05/04(反射)

反射:重点----每天都用反射,但是每天都不写反射     Java的反射技术是java程序的特征之一,它允许运行中的Java程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性. 使用反射可以获得Java类中各个成员的名称并显示出来.简单的说,反射就是让你可以通过名称来得到对象(类,属性,方法)的技术. 反射的作用? 可以通过反射机制发现对象的类型,发现类型的方法/属性/构造器? 可以创建对象并访问任意对象方法和属性等 主要点:运行时探究和使用编译时未知的类 Dog d1 = new

【2016.11.24】HTML笔记与练习

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus?"> <meta name="Author" content=""> <meta name="

2016/05/15 ThinkPHP3.2.2 表单自动验证实例 验证规则的数组 直接写在相应的控制器里

使用TP 3.2框架 验证规则也可以写到模型里,但感觉有些麻烦, 一是有时候不同页面验证的方式会不一样, 二是看到这个   Add  事件里的代码,就清楚要接收什么数据,如何验证数据能够在第一眼有个大致了解 ①控制器代码页 1 <?php 2 namespace Home\Controller; 3 use Think\Controller; 4 5 header("Content-type: text/html; charset=utf-8"); 6 7 class AddCo

2016/05/05 smarty 增 删 改

共  八个页面 ①login.php 1 <?php 2 include("init.inc.php"); 3 4 $smarty->display("login.html"); 5 ?> ②login.html  显示模板  在templates模板文件夹中 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset=&q

2016.2.24 dp练习

很经典的一道状压dp(似乎叫做旅行商问题),用f[i][s]表示在到达点i,已经经过的城市用二进制表示为s,于是方程就很简单了: f[i][s] = min { f[j][s ^ (1 << j)] + dis[j][i]| s & (1 << j) != 0} 然后用记忆化搜索即可,注意方向,因为dis[i][j]可能不等于dis[j][i].(下面的代码某个处理似乎没有必要) Code 1 #include<iostream> 2 #include<c

分布式技术一周技术动态 2016.05.29

分布式系统实践 1. 网易视频云:新一代列式存储格式Parquet的最佳实践 https://mp.weixin.qq.com/s?__biz=MzI4NTA1MDEwNg==&mid=2650755579&idx=1&sn=640c55c7f2800be48271cdfb1880be99&scene=0&key=8d8120cb97983fad266c6ac303c9142a6b1da8ee51bea2e187dba1380070fd7707bdef8da1404

2016/05/19 thinkphp 3.2.2 文件上传

显示效果:  多文件上传.  这里是两个文件一起上传 上传到文件夹的效果: ①aa为调用Home下common文件夹下的function.php  中的rname方法  实现的 ②cc为调用与Home平级文件夹common下的common文件夹下的function.php 以上是放公共方法的地方   程序可以自动调用 ③一瓶水.gif 的显示: 在linux操作系统下不会出现乱码   但在windows下会出现乱码 解决办法:找到核心目录  thinkphp下的library下的Upload下的

2016/05/17 thinkphp3.2.2 分页的使用:①在Home下设置Publics文件夹或在thinkPHP下library的vender 把page.class.php 考贝进入 ②通过new 实例化方式调用 $page=new \Home\Publics\Page($total,3);

注意分页的方法有两种:一种是thinkphp3.2 自带的   另一种是之前新闻页用过的     显示效果稍有差别 显示效果: 细节问题: ①搜索页面  要加session判断   和  分页 ②修改和添加页面需要有session判断 ③增删改的权限设置 控制器端: 1 <?php 2 namespace Home\Controller; 3 use Think\Controller; 4 class UserController extends Controller 5 { 6 public