算法题:马走日(C++)

2023-05-16

题目:

总时间限制:

1000ms

内存限制:

1024kB

描述

马在中国象棋以日字形规则移动。

请编写一段程序,给定n*m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点。

输入

第一行为整数T(T < 10),表示测试数据组数。
每一组测试数据包含一行,为四个整数,分别为棋盘的大小以及初始位置坐标n,m,x,y。(0<=x<=n-1,0<=y<=m-1, m < 10, n < 10)

输出

每组测试数据包含一行,为一个整数,表示马能遍历棋盘的途径总数,0为无法遍历一次。

样例输入


1
5 4 0 0  

样例输出


32  

————————————————————————————————

思路:典型的深度搜索,判断条件是点是否在棋盘内以及未经过。

code:

#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<iomanip>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
int cnt;
int tot=0;
int width;int height;//棋盘长宽
int map[10][10] = {0};//0表示未经过 
int action_x[] = {1,2,2,1,-1,-2,-2,-1}; int action_y[] = {2,1,-1,-2,-2,-1,1,2};
//判断是否在棋盘内 
bool check(int x,int y){
	if(x>=0&&y>=0&&x<width&&y<height)
	return true;
	else return false;
}
int dfs(int x,int y){                            
	map[x][y] = 1;
	//向八个方向搜索
	for(int i=0;i<8;i++){
		if(check(x+action_x[i],y+action_y[i])&&map[x+action_x[i]][y+action_y[i]]==0){
			map[x+action_x[i]][y+action_y[i]]=1;
			tot++;
			if(tot==(width*height-1)) {
			cnt++;}
			dfs(x+action_x[i],y+action_y[i]);
			tot--;
			map[x+action_x[i]][y+action_y[i]]=0;
		}
	}
	return cnt; 
}
int main(){
	int t;int x_ini; int y_ini;int ans[t];
	(cin>>t).get();
	for(int j=0;j<t;j++){
	(cin>>width>>height>>x_ini>>y_ini).get();
		if(!check(x_ini,y_ini)){
			ans[j]=0;break;
		}
		if(width==1&&height==1){
			ans[j]=1;break;
		}
		ans[j] = dfs(x_ini,y_ini);
		cnt = 0;
		memset(map,0,sizeof(map));//map清零 
	}
	for(int i = 0;i<t;i++){
		cout<<ans[i]<<endl;
	}
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

算法题:马走日(C++) 的相关文章

  • python ffmpeg直播客户端

    import PySimpleGUI as sg import sys import json import os import requests import subprocess import pygame camera import
  • 动物类的继承

    动物类的继承 要求 xff1a 1 在一个名为Test java的文件中定义四个类 xff1a 动物类Animal xff0c 狗类Dog和猫类Cat继承Animal xff0c 测试类Test xff0c 要求编写代码的同时编写简单注释
  • ffmpeg命令操作 合并视频 取图片帧数 获取音频

    ffmpeg安装 点击这里跳转 官方 wins安装的话要添加 环境变量转载点击这里 ffmpeg命令操作 合并视频 取图片帧数 1 获取视频内的图片 ffmpeg i input mp4 r 15 q v 2 f image2 img 04
  • JS 使用 lz-string存储 数据压缩

    浏览器localStorage存储为 5M 然而并不能满足我们的要求 我们可以压缩的是您可以存储的更多数据 好在JS 有lz string 库 引入库 lt script src 61 34 https cdn bootcss com lz
  • USB开发者模式 安卓 adb操作 + 安装

    USB开发者模式 安卓 adb操作 43 安装 这是adb 安装 xff01 xff01 xff01 xff01 xff01 xff01 xff01 xff01 xff01 xff01 xff01 xff01 不是gdb 安装 adb 下载
  • python控制 鼠标移动 pyautogui || PyMouse 自动化

    python控制 鼠标移动 pyautogui PyMouse 自动化 方法1 pyautogui 安装 pip install pyautogui文档基本操作指令 gui PAUSE 61 0 5 每次函数调用后暂停0 5秒 gui FA
  • PHP 图片去除水印 去除logo

    使用插件 ffmpeg 点这里 不使用插件 也可以 lt php function CLEAR ICO filename savename Clear W Clear H Clear X Clear Y filename 61 读取图片名
  • Apache Options指令详解

    Options指令是Apache配置文件中一个比较常见也比较重要的指令 xff0c Options指令可以在Apache服务器核心配置 server config 虚拟主机 配置 virtual host 特定目录配置 directory
  • 基于VC开发epoll/linux 程序指南

    1 概述 3 2 背景 3 3 总体思路 3 4 功能特点 4 5 开发工具和操作系统要求 4 5 1 Windows VC 4 5 2 linux g 43 43 4 6 开发人员要求 5 7 Linux针对epoll移植 5 8 VC工
  • Qt Creator闪退解决办法

    Qt Creator闪退解决办法 Qt 今天突然出现所有插件无法打开的问题 xff0c 找了很久的资料也没解决 只能重装QtCreator 结果一点开QtCreator过不了一分钟 xff0c 就闪退 看到windows记录的问题原因是Qt
  • QScrollArea qss样式设置失效问题

    QScrollArea通过样式改变背景色 遇到设置QScrollArea qss无法生效问题 xff0c 网上没找到合适解决办法 xff0c 查看QScrollArea qt4源码后发现 xff0c 增加如下代码之后 xff0c qss正常
  • Android下打印调试堆栈方法

    打印堆栈是调试的常用方法 xff0c 一般在系统异常时 xff0c 我们可以将异常情况下的堆栈打印出来 xff0c 这样十分方便错误查找 实际上还有另外一个非常有用的功能 xff1a 分析代码的行为 android代码太过庞大复杂了 xff
  • 家里的垃圾移动光猫和tp路由器设置

    第一步 xff1a 将TP初始化 第二步 xff1a 将网线一端插在tpwan口 xff0c 就是与众不同的 第三步 xff1a 将TP的LAN口IP改为192 168 2 1 第四步 xff1a 将TP的WAN口设置为 xff1a 这里先
  • 蓝桥杯单片机闪烁灯控制逻辑分析

    以前的闪烁灯上来就是一片代码 xff0c 总感觉不是很靠谱 xff0c 现在决定写一个比较细致的逻辑分析 首先 xff0c 我们先来贴上开发板的电路图 我们首先先看一下上面的流水灯电路图 xff0c 74HC573锁存器进行流水灯的控制 x
  • idea取消vim模式

    在安装idea时选择了vim编辑模式 xff0c 但是用习惯了eclipse xff0c 总是要拷贝粘贴 xff0c 在idea中一直按ctrl 43 c和ctrl 43 v不起总用 于是想把vim模式关闭掉 方法 xff1a 菜单栏 to
  • atcoder beginner contest 142 Disjoint Set of Common Divisors(质因数分解)

    题目大意 xff1a 找出A B中的所有互质的因数 解题思路 xff1a 首先 xff0c 我们必须找出因数 我们知道对gcd a b 进行因数分解就能得到a xff0c b的所有因数 但是这里需要互质的因数 xff0c 所以我们这里需要对
  • spring管理事务控制的问题

    在使用ssm框架开发项目时 xff0c 事务控制交由spring来管理 xff0c 然而在查看日志时发现一个问题 xff1a org mybatis spring SqlSessionUtils closeSqlSession SqlSes
  • 关于 Debian 系统

    Debian是什么 xff1f Debian 计划是一个致力于创建一个自由操作系统的合作组织 我们所创建的这个操作系统名为Debian 操作系统是使计算机运行的基本程序和工具的集合 xff0c 其中最主要的部分称为内核 xff08 kern
  • btrfs的子卷与快照功能--Linux下备份系统

    关于Btrfs 什么是Btrfs 以及它的性能 可以在许多地方查阅得到 这里要提到的是 Btrfs文件系统本身就是由子卷 Subvolumes 构成的 它的top level是由B tree结构的含有目录 文件和子卷等东西构成的子卷 而在t
  • c# 通过dotPeek调试.net源码

    1 安装dotPeek 2 设置dotPeek xff0c 开启pdb服务 3 设置VS xff0c 添加服务来源 取消仅我的代码 4 测试代码 xff0c 在Console WriteLine 打断点 xff0c 并按F11进入 注意 x

随机推荐

  • 超棒的离线文档阅读器:Zeal

    前言 xff1a 大家写代码的时候总会有些方法或者属性不太清楚 xff0c 这时候我们就会打开浏览器 xff0c 然后找官方api或者直接搜索引擎找对应问题 xff0c 无疑花费了大量的时间 所以 xff0c 你需要一个桌面应用Zeal x
  • UITabBarController标签控制器相关设置

    1 根据下标索引以及控制器索引显示需要显示的控制器 self selectedIndex 61 sender tag 100 self selectedViewController 61 VC 2 设置标签控制器下面的文字 这里是设置系统自
  • Node App: Note命令行应用程序

    此程序需安装npm 第三方库yargs 解析命令行参数 xff0c chalk 输出特定样式的文本 安装版本如下 xff1a chalk 4 1 1 yargs 17 0 1 Note 应用程序支持 4个命令 xff1a add 添加一个n
  • 怎么样用批处理来创建一个txt文件

    怎么样用批处理来创建一个txt文件 cd gt test txt cd 表示切换到当前目录 xff0c 这个命令没有任何作用 gt 是重定向符 xff0c 将当前输出重定向到文件 这个命令创建一个名为test txt的空文件
  • STM32F103寄存器方式点亮LED流水灯

    一 设计思路 本实验使用GPIOB GPIOC GPIOD这3个端口控制LED灯 GPIO 是通用输入输出端口的简称 xff0c 简单来说就是 STM32 可控制的引脚 xff0c STM32 芯片 的 GPIO 引脚与外部设备连接起来 x
  • 一步步CEF(2)之编译ceflicent

    一步步CEF xff08 1 xff09 之编译libcef dll wrapper lib已经提供了c 43 43 的静态库 xff0c 这次要将cefclient编译出来 这里要说明一下 xff0c 如果仅仅将cefclient编译的话
  • Java查找最长字符匹配子串

    1 比较两个字符串 xff0c 短的那一个先判断是否包含在长的字符串中 2 如果不在 xff0c 短的字符串子串长度 1 xff0c 从前往后移判断是否包含 xff0c 不包含继续此操作 public class getMaxStringT
  • Python,Anaconda环境安装配置

    文章目录 Python安装pip包管理 Anaconda安装conda包管理和环境管理Python3与Python2共存 xff08 Anconda3与Anaconda2共存 xff09 Jupyter notebook配置Jupyter
  • SVN提示E230001、E170013解决方案

    解决办法 1 Windows电脑打开cmd命令行 xff0c Mac电脑打开终端 2 输入如下命令 svn ls https 127 0 0 1 8888 svn XXXXXXXX 这里是项目的svn地址 他会提示你输入信息 xff0c 这
  • 记一次Nginx启动失败解决过程(环境:linux Ubuntu 16.04 64bit , ECS for Aliyun)

    背景 今天装了个jpress想弄个博客 xff0c 然后关了Nginx和uwsgi xff0c 启动了tomcat 使用80端口 xff0c 后来直接shutdown sh关闭tomcat后 xff0c 再次启动Nginx报了个错误 Job
  • Windows安装Qt在选择界面卡死解决方案

    Windows安装Qt在选择界面卡死解决方案 很简单的操作 xff1a 就是安装了有道词典 xff0c 退出有道词典 xff0c 再安装Qt 哈哈哈 xff0c 是不是很简单 xff0c 我也是摸索了半天才知道 xff0c 网上说的各种卸载
  • Linux之cmake3.6安装

    1 官网下载cmake 3 6 3 tar gz https cmake org files v3 6 cmake 3 6 3 tar gz 2 解压文件tar xvf cmake 3 6 3 tar gz xff0c 并修改文件权限chm
  • mysql 分组获取最新一条记录

    1 需求 按用户名分组 xff0c 获取最新插入的一条记录 2 模拟数据 span class token comment span span class token comment Table structure for user spa
  • 电脑连接树莓派出现问题--(putty,VNC,MobaXterm和远程桌面连接)

    以下解决方法与问题是基于我之前给树莓派写的一个开机自启动python脚本导致的问题所提出的 如果你从来没有给树莓派写过脚本 xff0c 那我的这篇博客对现在的你来说没有帮助 xff0c 不用浪费时间了 今天在用PC的Putty ssh方式连
  • STM32+ESP-07S+MQTT服务器实现数据上传和接收

    参考文章 xff1a https blog csdn net weixin 46144773 article details 128793578 https docs ai thinker com esp8266 sdk esp32下载工具
  • Python问题:AttributeError: ‘str‘ object has no attribute ‘decode‘

    具体报错情况 xff1a AttributeError Traceback most recent call last lt ipython input 29 7b65833fd81b gt in lt module gt 8 from k
  • mount.nfs报错

    mount nfs requested NFS version or transport protocol is not supported 今天在挂载nfs时遇到mount nfs requested NFS version or tra
  • VMware虚拟机安装win10 32位

    VM15 43 Win10 32位 前期准备安装过程 前期准备 VMware Workstation15官方版下载 xff1a https www onlinedown net soft 2062 htm Win10 32位镜像下载 xff
  • AttributeError: ‘str‘ object has no attribute ‘value‘

    属性错误 xff1a str 对象没有属性 值 这是我在用python读取excel单元格的时候遇到的报错 xff0c cell对象没有属性值 xff0c 说明我的语法返回的是cell单元格对象而并非单元格的值 这时候只需将iter row
  • 算法题:马走日(C++)

    题目 xff1a 总时间限制 1000ms 内存限制 1024kB 描述 马在中国象棋以日字形规则移动 请编写一段程序 xff0c 给定n m大小的棋盘 xff0c 以及马的初始位置 x xff0c y xff0c 要求不能重复经过棋盘上的