【POJ】A Knight's Journey

北大POJ初级-所有题目AC代码+解题报告 立即下载

Problem here

Description

Background

The knight is getting bored of seeing the same black and white squares again and again and has decided to make a journey around the world. Whenever a knight moves, it is two squares in one direction and one square perpendicular to this. The world of a knight is the chessboard he is living on. Our knight lives on a chessboard that has a smaller area than a regular 8 * 8 board, but it is still rectangular. Can you help this adventurous knight to make travel plans? Problem Find a path such that the knight visits every square once. The knight can start and end on any square of the board.

Input

The input begins with a positive integer n in the first line. The following lines contain n test cases. Each test case consists of a single line with two positive integers p and q, such that 1 <= p * q <= 26. This represents a p * q chessboard, where p describes how many different square numbers 1, … , p exist, q describes how many different square letters exist. These are the first q letters of the Latin alphabet: A, …

Output

The output for every scenario begins with a line containing “Scenario #i:”, where i is the number of the scenario starting at 1. Then print a single line containing the lexicographically first path that visits all squares of the chessboard with knight moves followed by an empty line. The path should be given on a single line by concatenating the names of the visited squares. Each square name consists of a capital letter followed by a number. If no such path exist, you should output impossible on a single line.

Sample Input

31 12 34 3

Sample Output

Scenario #1:A
1Scenario #2:impossible
Scenario #3:A1B3C1A2B4C2A3B1C3A4B2C4

Source

TUD Programming Contest 2005, Darmstadt, Germany

Solution

#include <iostream>
#include <memory.h>
using namespace std;

int dx[8] = {-2, -2, -1, -1, 1, 1, 2, 2};
int dy[8] = {-1, 1, -2, 2, -2, 2, -1, 1};

int allStep;
char ans[100];
bool visit[100][100];
bool ok;
int p, q;

void dfs(int cnt, int x, int y){
    if(cnt == allStep){
        for(int i = 0; i < 2*cnt; i++){
            cout << ans[i];
        }
        cout << endl;
        ok = true;
        return ;
    }

    for(int i = 0; i < 8; i++){
        if(ok == false){
            int new_x = x+dx[i];
            int new_y = y+dy[i];
            if(new_x > 0 && new_y > 0 && new_x <= q && new_y <= p){
                if(visit[new_x][new_y] == false){
                    visit[new_x][new_y] = true;
                    ans[2*cnt] = 'A' + new_x-1;
                    ans[2*cnt+1] = '1' + new_y-1;
                    dfs(cnt+1, new_x, new_y);
                    visit[new_x][new_y] = false;
                }
            }
        }
    }
}

int main(){

    int kase;
    cin >> kase;
    for(int ks = 1; ks <= kase; ks++){
        cin >> p >> q;
        allStep = p*q;
        memset(visit, false, sizeof(visit));
        ok = false;
        visit[1][1] = true;
        ans[0] = 'A';
        ans[1] = '1';
        cout << "Scenario #" << ks << ":" << endl;
        dfs(1, 1, 1);
        if(ok == false){
            cout << "impossible" << endl;
        }
        cout << endl; 
    }

    return 0;
}
【算法】基于STM32的MPU6050卡尔曼滤波算法(入门级) 1. 简介 卡尔曼滤波(Kalman filtering)是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。详情见:卡尔曼滤波简介 MPU6050的解算主要有三种姿态融合算法:四元数法 、一阶互补算法和卡尔曼滤波算法。我们常用的DMP库使用的是四元数法,本文采用卡尔曼滤波算法,使用RT-Thread国产操作系统,利用env工具进行串口、模拟IIC环境配置,使用10ms的线程进行卡尔曼滤波解算。 2. 阅读详情

相关推荐

国产PLC实战:用汇川Easy320搞定TCP通信,手把手教你网口转串口控制设备

本文详细解析了如何使用汇川Easy320 PLC实现TCP通信与串口控制,解决工业自动化中设备间通信协议差异问题。通过实战案例和代码示例,展示了Easy320在协议转换、数据解析和串口转发中的高效应用,帮助工程师快速掌握网口转串口控制技术。

weixin_31774841的博客 499

poj—2488骑士的旅程(深搜)

题目: 骑士厌倦了一次又一次地看到相同的黑白方块,并决定 环游世界。每当骑士移动时,它都是一个方向上的两个正方形和一个垂直于此方向的正方形。骑士的世界就是他所生活的棋盘。我们的骑士住在一个棋盘上,这个棋盘的面积比普通的8 * 8棋盘小,但它仍然是矩形的。你能帮助这个冒险的骑士制定旅行计划吗?问题 找到一条道路,使骑士访问每个方块一次。 输入: 输入以第一行中的正整数 n 开头。以下行包含 n 个测试用例。每个测试用例由一行具有两个正整数 p 和 q 组成,使得 1 <= p * q <

zjsru_Beginner的博客 1174

中兴畅行60 ZTE 7552N 深度改造指南:从解锁BL到Magisk Root与IMEI硬改全流程

本文详细介绍了中兴畅行60(ZTE 7552N)的深度改造全流程,包括解锁BL、刷入Magisk获取Root权限以及IMEI硬改等关键步骤。通过专业的操作指南和实用技巧,帮助用户安全完成设备改造,同时提醒注意法律风险和技术难点。

weixin_33670786的博客 1884

POJ2488 A Knight's Journey

题目:http://poj.org/problem?id=2488 题目大意:可以从任意点开始,只要能走完棋盘所有点,并要求字典序最小,不可能的话就impossible; 思路:dfs+回溯,因为字典序最小,如果可以的话,肯定是从(1,1)开始的。然后递归搜索该点的所有方向,不能满足就回溯,直到找到能满足的,或者一直找不到。 代码+注释: #include&lt;iostream&gt;...

ACMerszl的博客 454

Zigbee智能开关和单火取电技术

ZigBee智能开关(单火线)是在ZigBee协议基础上开发由单火线供电的开关,它可以控制各种类型负载的开关,如LED灯,白炽灯,荧光灯和钨丝灯等。配合相应的主机用户可以使用手机远程控制它,进而达到控制灯光开关的目的。它具有自组网功能,使用简单方便,给你的居家生活带来无线享受。可应用于家庭,办公,医院和酒店等场合。

danhuoxian的博客 1万+

电子系统设计与创新实践作品:简易电子琴

题目 4:简易电子琴 (1)具有8个音阶按键,每个音阶按键频率如表1所示。 (2)每个按键对应LED显示。 (3)音阶信号经功放连接8欧姆扬声器,输出功率可达1W。 (4)每个音阶输出音量一样。 (5)扬声器输出音量可调节,音量调节分为高、中、低三档,并进行档位显示。

weixin_47510497的博客 2856

poj—2488骑士的旅程

题目描述:若骑士所处位置为图中马所在的位置,则他可以往图中白点处走 要求: 1第一行首先给出一个整数,表示要测试的数据组数,接下来每一行包含两个整数,第一个整数为矩阵的行数,第二个数为矩阵的列数,矩阵的行从第一行开始依次标记为1,2,....列数从第一列开始依次标记为A,B,C......。 2.骑士从左上角那个点处开始走,判断骑士是否可以遍历矩阵中的所有点,如果可以,请输出字典序最小的路径

SHIJIE15138的博客 1223

ClickHouse的bitmap使用

ClickHouse的bitmap使用 bitmap的基本使用 在CK中bitmap有两种构建方式,在ClickHouse的官网有说明: (1)一个是由聚合函数groupBitmapState构造的, (2)另一个是由Array Object构造的。同时还可以将位图对象转化为数组对象。 bitmap实战 数据和基本数据表准备 创建一张基本表,一个用户表,有多个描述的维度,每个维度由该维度的唯一id。 CREATE TABLE test02(id UInt16, tag1 UInt8, tag2 UInt8,

zg_hover的专栏 5654

poj2488(深搜+剪枝)

题目链接:http://poj.org/problem?id=2488 通过此题,我学习到: 1.lexicographically 是字典序的,因此按照先字母后数字的原则,八个方向从左到右,从上到下的交替优先顺序,总是从左上角开始就好。 2.此题只要一个方案,因此可以设置flag,在第一次得到结果后(肯定是答案),设置flag,导致以后能够大量剪枝。 3.此题虽然每个格子用字母+数字的形...

GooTal的博客 528

【ROS2实体机械臂驱动】封装珞石ROS2驱动库ros2_rokae_driver_lib

这一篇文章将封装为,和之前一篇文章《ROS2 编译、打包、封装三方库(Knet为例)_ros插件编译成静态库-优快云博客》写的封装,区别在于优化了cmake dependencies和include等属性和宏定义,同时对于多库内部依赖的情况做了特定处理,更加方便外部调用。其中珞石的编译参考博主之前的文章rokae xCoreSDK C++测试使用,这里不再做赘述。通过这篇文章对于如何打包机械臂厂家提供的三方库做了进一步说明,方便用于不同机械臂厂家的三方库封装调用。!!

机器人梦想家 Bing Lee 1396

使用mindie:2.0.RC2-800I-A2-py311-openeuler24.03-lts制作一个通用的模型推理性能测试的镜像

本文详细介绍了在NPU环境下进行模型推理性能测试的完整流程。首先配置了测试所需的环境和设备信息,包括Python 3.10.9和3.11.6版本、测试脚本和镜像文件。然后分步骤说明了镜像制作过程:创建特权容器、安装Python 3.10.9、配置VLLM环境,并详细描述了测试容器的启动方法。最后提供了镜像打包和使用指南,包括如何加载镜像、启动容器、运行测试脚本(以DeepSeek-32B模型为例)以及更换测试模型的步骤。整个过程涉及环境变量配置、权限设置和服务启动等关键操作。

m0_50105717的博客 1015

poj解题报告——2488

人生第一次做DFS啊,好激动啊!题目不是很难理解。题意:骑士周游问题,按照给你的走法,问骑士能否在p * q的棋盘上,从某个点出发不重复走遍棋盘每个点,如果能,输出骑士每步的位置(按字典序),如果不能,则输出impossible。         走法可能有多种,必须严格按照字典序走。   题目要求以"lexicographically"方式输出,也就是字典序...要以字典序输出路径,那

Lingfu74的专栏 803

具身智能(26):RDK S100的LeRobot或Agile X piper机械臂控制模型

本文档详细介绍了基于ROS2的机器人控制模型架构与标定数据联动机制。核心采用"感知-规划-控制"闭环流程,通过激光雷达、相机和IMU的融合数据实现厘米级定位(≤1cm)。文档包含两大控制模型配置:1)RDKLeRobot模型,重点说明PID参数调节和标定文件路径设置;2)AgileXPiper模型,强调驱动安装与外部标定文件集成。针对常见问题提供解决方案,如控制指令无响应需验证标定路径,运动偏差过大需重新标定等。最后给出批量部署方案,通过复制基准配置文件实现多机器人快速配置,要求定位偏差

码农17年的博客 177

POJ 2488 A Knight's Journey

题目链接:https://vjudge.net/problem/POJ-2488 题目大意   多组数据,每组给定一个 p * q 的国际象棋棋盘,问国际象棋中的骑士能否选取一个起点,然后从这个起点能够不重复地走到所有格子,如果有,输出字典序最小的路径。 分析   先说结论,如果这条路存在,那么字典序最小的路径的起点一定是 A1。   这个结论是猜出来的,因为我看很多帖子说的都...

weixin_30346033的博客 135

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【POJ2488】A Knight's Journey

题目传送门 本题知识点:深度优先搜索 + 回溯 + 剪枝 + 字典序 题意是给你一个由 p,q 组成一个矩形的棋盘,让你用马棋在这上面走,是否能一线走完这 p * q 个格子。 关于这条路线是怎么走的,自己动手在纸上模拟一下样例3棋子行走的过程就可以了。 所以这种一线走完的题意可以很清楚地想到是深搜。 我第一次写的时候是没有回溯的,没有回溯的话,就会走回路,提交了一遍WA了,所以这里是不...

LT4585的博客 185

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【DFS】POJ 2488 A Knight's Journey

这段时间要沉迷刷题一段时间了,就让优快云陪我一起吧! 一、题目大意 这道题的大致意思就是,给你一个p×q的矩阵,矩阵的行标号为1-p,矩阵的列标号为’A’ - ‘A’ + q,一个骑士要经过这个矩阵的所有格子,他可以从任意一个点开始,并且可以终止于任意点,要求所有可能路径中字典序最小的那条路径。 骑士的行走方式如下: 看着有点类似于象棋中的马。 二、题目思路以及AC代码 这道题也比较简单,...

Johnson的博客 244

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

POJ2488 骑士游历 A Knight's Journey 解题报告

这个题有3点要注意的地方。 1、弄清题意,p指行号,从上到下依次是1,2,3...p;q指列号,从左到右依次是A,B,C,D...,字典序输出意思是先按列排序,左边的在前,同一列的按行排序,行号小的在前。 2、递归遇到某个方块的下一步无处可跳时,返回上层之前要把vis矩阵相应位置清零!还有起始位置就是A1,如果A1无解则不需要再遍历别的情况了,直接输出impossible即可。 3、输出的时

monkeyduck的专栏 1417

poj 2488 A Knight's Journey

A Knight's Journey Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 29280   Accepted: 10039 Description Background  The knight is getting bored of seeing the

逸疏 796

POJ_2488: A Knight's Journey

题目链接:http://poj.org/problem?id=2488 POJ 2488 DFS

lws390322761的博客 406

POJ A Knight's Journey

题意:给你一定的格子的棋盘,一匹马是否可以遍历完全整个棋盘 View Code 1 #include<stdio.h> 2 #include<string.h> 3 const int MAXN=30; 4 5 //国际象棋纵是数字,横是英文 6 struct Node//用于最后字典序输出 7 { 8 int x...

aysd68784的博客 94

POJ 2488 A Knight's Journey题解

A Knight's JourneyTime Limit:1000MS    Memory Limit:65536KB    64bit IO Format:%I64d & %I64u SubmitStatusPracticePOJ 2488 Appoint description: Description Background The knight is

SDUTACM的博客 795
上一篇: 【POJ】Highways
下一篇: 【POJ】Jungle Roads
「已注销」
博客等级 码龄12年 1粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值