分治法解马的Hamilton

2023-10-27

#include <stdio.h>

int map[1000][1000];
int index =1;

int horse[6][150]={{1,30,33,16,3,24,32,17,2,23,34,15,29,36,31,14,25,4,18,9,6,35,22,13,7,28,11,20,5,26,10,19,8,27,12,21}
					,{1,10,31,40,21,14,29,38,32,41,2,11,30,39,22,13,9,48,33,20,15,12,37,28,42,3,44,47,6,25,18,23,45,8,5,34,19,16,27,36,4,43,46,7,26,35,24,17}
					,{1,46,17,50,3,6,31,52,18,49,2,7,30,51,56,5,45,64,47,16,27,4,53,32,48,19,8,29,10,55,26,57,63,44,11,22,15,28,33,54,12,41,20,9,36,23,58,25,43,62,39,14,21,60,37,34,40,13,42,61,38,35,24,59}
					,{1,46,37,66,3,48,35,68,5,8,38,65,2,47,36,67,4,7,34,69,45,80,39,24,49,18,31,52,9,6,64,23,44,21,30,15,50,19,70,33,79,40,25,14,17,20,53,32,51,10,26,63,22,43,54,29,16,73,58,71,41,78,61,28,13,76,59,56,11,74,62,27,42,77,60,55,12,75,72,57}
					,{1,54,69,66,3,56,39,64,5,8,68,71,2,55,38,65,4,7,88,63,53,100,67,70,57,26,35,40,9,6,72,75,52,27,42,37,58,87,62,89,99,30,73,44,25,34,41,36,59,10,74,51,76,31,28,43,86,81,90,61,77,98,29,24,45,80,33,60,11,92,50,23,48,79,32,85,82,91,14,17,97,78,21,84,95,46,19,16,93,12,22,49,96,47,20,83,94,13,18,15}
					,{1,4,119,100,65,6,69,102,71,8,75,104,118,99,2,5,68,101,42,7,28,103,72,9,3,120,97,64,41,66,25,70,39,74,105,76,98,117,48,67,62,43,40,27,60,29,10,73,93,96,63,44,47,26,61,24,33,38,77,106,116,51,94,49,20,23,46,37,30,59,34,11,95,92,115,52,45,54,21,32,35,80,107,78,114,89,50,19,22,85,36,55,58,31,12,81,91,18,87,112,53,16,57,110,83,14,79,108,88,113,90,17,86,111,84,15,56,109,82,13}
					};
void Print(int m,int n,int x,int y,int M,int N,int flag)
{ 
	for(int i =x;i<m+x;i++)
	{
		for(int j = y;j<n+y;j++)
			if(m<=n) 
			{
				if(flag == 1 ) 
				{
					map[i][j]=horse[(m-6)/2+(n-6)/2][(i-x)*n+(j-y)];
				}
				else if(flag == 2)
				{
					int index = horse[(m-6)/2+(n-6)/2][2*n+m-2];
					int end = horse[(m-6)/2+(n-6)/2][m-1];
					int number = horse[(m-6)/2+(n-6)/2][(i-x)*n+(j-y)];	
					if(index>end)
						map[i][j] = (number-index+m*n)%(m*n)+1+map[x+1][y+n];
						//map[i][j] = (number-index+m*n)%(m*n)+1;
					else
						map[i][j] = (m*n)-(number-index+m*n)%(m*n)+1+map[x+1][y+n];
				//	map[i][j] = map[x+1][y+n];
				}
				else if(flag == 3)
				{
					int index = horse[(m-6)/2+(n-6)/2][(m-3)*n+1];
					int end = horse[(m-6)/2+(n-6)/2][(m-1)*n];
					int number = horse[(m-6)/2+(n-6)/2][(i-x)*n+(j-y)];	
					if(index>end)
						map[i][j] = (number-index+m*n)%(m*n)+1+map[x+m-2][y-1];
						//	map[i][j] = (number-index+m*n)%(m*n)+1;
					else
					//	map[i][j] = (m*n)-(number-index+m*n)%(m*n)+1+map[x+m-2][y-1];
					//	map[i][j] = (number-index+m*n)%(m*n)+1;
						map[i][j] = (index-number+m*n)%(m*n)+1+map[x+m-2][y-1];
				}
				else if(flag == 4)
				{
					int index = horse[(m-6)/2+(n-6)/2][2];
					int end = horse[(m-6)/2+(n-6)/2][n];
					int number = horse[(m-6)/2+(n-6)/2][(i-x)*n+(j-y)];	
					if(index>end)
						map[i][j] = (number-index+m*n)%(m*n)+1+map[x-1][y];
					else
						map[i][j] = (m*n)-(number-index+m*n)%(m*n)+1+map[x-1][y];
				}
				else
					map[i][j]=horse[(m-6)/2+(n-6)/2][(i-x)*n+(j-y)];
			}
			else
			{
				map[i][j]=horse[(m-6)/2+(n-6)/2][(i-x)+(j-y)*m];
				
			}
			//map[i][j]=index;
	}
	if(flag == 1)
	{
		for(int i =x;i<m+x;i++)
			for(int j = y;j<n+y;j++)
				if(map[i][j]>map[x+m-2][y+n-1])
					map[i][j]=M*N-m*n+map[i][j]; 	
	} 
	index++;
}

void fun(int m,int n,int x,int y,int M,int N,int flag)
{

	//printf("\n======================>%d %d %d %d %d\n",m,n,x,y,flag);
	if(m<=10 || n<=10)
		Print(m,n,x,y,M,N,flag); 
	else
	{
		if(m%4==0)
		{
			if(n%4==0)
			{
				fun(m/2,n/2,x,y,m,n,1);			//左上 
				fun(m/2,n/2,x,y+n/2,m,n,3);		//右上 
				fun(m/2,n/2,x+m/2,y+n/2,m,n,4);	//右下 
				fun(m/2,n/2,x+m/2,y,m,n,2);		//左下 
			  }
			else
			{
				fun(m/2,n/2-1,x,y,m,n,1);              //左上 
				fun(m/2,n/2-1,x+m/2,y,m,n,2);          //左下 
				fun(m/2,n/2+1,x,y+n/2-1,m,n,3);        //右上 
			 	fun(m/2,n/2+1,x+m/2,y+n/2-1,m,n,4);    //右下 
			}
		}
		else
		{
			if(n%4==0)
			{
				fun(m/2-1,n/2,x,y,m,n,1);             //左上 
				fun(m/2+1,n/2,x+m/2-1,y,m,n,2);       //左下 
				fun(m/2+1,n/2,x,y+n/2,m,n,3);         //右上 
				fun(m/2+1,n/2,x+m/2-1,y+n/2,m,n,4);   //右下 
			}
			else
			{    
				fun(m/2-1,n/2-1,x,y,m,n,1);           //左上 
				fun(m/2+1,n/2-1,x+m/2-1,y,m,n,2);     //左下 
				fun(m/2-1,n/2+1,x,y+n/2-1,m,n,3);       //右上 
				fun(m/2+1,n/2+1,x+m/2-1,y+n/2-1,m,n,4);   //右下 
			}
		}
	}
		
}


int main()
{
	int m,n;
	while(~scanf("%d%d",&m,&n))
//	m=16;n=16; 
	{
		int i;
		for(i = 0;i<m;i++)
			for(int j = 0;j<n ;j++)
				map[i][j] = 0;
		index = 1;
		fun(m,n,0,0,m,n,-1);
		for(i = 0;i<m;i++)
		{ 
			for(int j = 0;j<n;j++)
			{
				printf("%4d",map[i][j]);
			}
			printf("\n");
		} 
	}
	return 0;
}

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

分治法解马的Hamilton 的相关文章

  • 单点登录CAS学习(一):初识单点登录

    一 单点登录应用场景 不少业主单位随着自身的发展 建立不少业务支撑系统 往往会采用不同的开发商进行系统开发和建设 因此必然形成如下一种局面 工作人员需要登录多个业务系统才能将自己的工作全部完成 给工作人员带来了额外的负担 因此单点登录变应运
  • CentOS 6.9下的iptables在本机用DNAT转发指定IP到内网IP无效的问题解决(127.0.0.1)...

    比如 iptables t nat A OUTPUT p tcp d 192 168 1 0 24 dport 2222 j DNAT to destination 127 0 0 1 2222或者iptables t nat A OUTP
  • [个人笔记] Windows配置NTP时间同步

    Windows 运维篇 第六章 Windows配置NTP时间同步 Windows 运维篇 系列文章回顾 Windows配置NTP时间同步 域控环境的NTP配置 工作组环境的NTP配置 Windows的CMD部分命令集 参考来源 系列文章回顾
  • Angular表单实现双向数据绑定

    创建组件过程省略 实现双向数据绑定 要在app module中引入并声明 表单组件内容 import Component from angular core Component selector app form templateUrl f
  • mysql开启日志general_log

    general log会记录下发送给MySQL服务器的所有SQL记录 因为SQL的量大 默认是不开启的 一些特殊情况 如排除故障 可能需要临时开启一下 开启MySQL的general log MySQL有三个参数用于设置general lo
  • OBS直播画质怎么调?

    有用户在使用OBS软件直播时 发现直播的画质太差了 想要调高画质 但是却不知道如何调整 OBS参数设置教程 1 双击或者右击打开OBS软件 接着点击右下角箭头所指的设置选项 2 来到设置界面后 点击页面左侧的输出选项 3 在下图所示的输出页
  • Python学习总结1(知识+示例)

    学习环境 Ubuntu18 04系统 Geany编辑器 Python3 Pyhton3 安装 sudo add apt repository ppa fkrull deadsnakes sudo apt get update sudo ap
  • 故障注入测试(Fault Injection Test)评价类型说明

    这周新一篇技术文章来袭 上周我们对故障注入测试 Fault Injection Test 方法进行了初步的了解 本周要分享的技术文章是 故障注入测试 Fault Injection Test 评价类型说明 将针对故障注入测试进行更深层的说明
  • Linux 字符串截取方法

    八种截取方法 场景 var http www baidu com abc html 1 删除左边字符 保留右边字符 例 echo var 输出内容 www baidu com abc html 表示所有 获取变量var从左边遍历开始遇到的第
  • linux常用压缩、解压缩文件或文件夹命令tar、zip

    前言 工作中 压缩 解压缩文件或文件夹是比较基本的操作了 利用 tar或zip 命令可以把一大堆的文件和目录打包成一个文件 这对于备份文件或是将几个文件组合成为一个文件进行网络传输是非常有用的 tar压缩文件 tar 选项 源文件或目录 选
  • 微信支付接入

    目 录 第1章 微信支付接入 2 第2章 微信小程序申请微信支付 3 2 1 申请微信支付 3 2 2 微信审核 3 2 3 账户参数说明 4 第3章 微信公众号申请微信支付 5 3 1 支付申请 5 3 2 提交资料 6 3 3 填写商户
  • 多益网络校招前端面经(2020.09.24)

    多益网络校招前端面经 2020 09 24 面试平台 QQ视频通话 时长 大约半小时 过程 自我介绍 项目问题 项目中遇到的问题以及解决方式 在团队开发过程中个成员合作方式 遇到问题的解决方式 css命名冲突 http和https http
  • PyCharm使用教程(详细版 - 图文结合)

    目录 一 创建项目 二 运行 三 错误提示 四 安装三方包 PyCharm的使用贯穿整个Python的学习 所以单独拿出来出教程不合适 说多了对于新手来说也还是不明白 这里我们先从学习开始前大家需要用到PyCharm的一些功能讲起 后面的p
  • PHP实现用户登录注册(详细教程)

    教程前先给大家看看小编的实现成果吧 图1 图2 图3 教程 实现这个功能我们需要五个php文件 login php 登录界面 如图2
  • unity通过全局事件对项目进行解耦

    一个类要是想调用另一个类的方法 例如A想调用B的方法 方式一 引用 最简单的方式是A持有一个B类的引用 即A拥有一个B的成员对象 方式二 设计模式 中介者模式 或者A和B同属于一个对象C 通过对象C调用对方 中介者模式 例如QQ群 A和B互
  • 如何将二维数组作为函数的参数传递

    今天写程序的时候要用到二维数组作参数传给一个函数 我发现将二维数组作参数进行传递还不是想象得那么简单里 但是最后我也解决了遇到的问题 所以这篇文章主要介绍如何处理二维数组当作参数传递的情况 希望大家不至于再在这上面浪费时间 正文 首先 我引
  • android 弹出式对话框实现自定义菜单栏

    第一步 创建菜单项实体类 Menu 菜单栏选项类 public class Menu 标题 private String title Id 图片Id private int iconID public Menu String title i
  • OpenWrt安装使用教程(x86/64架构)

    什么是OpenWrt 官网简介 OpenWrt项目是一个针对嵌入式设备的Linux操作系统 OpenWrt不是一个单一且不可更改的固件 而是提供了具有软件包管理功能的完全可写的文件系统 这使您可以从供应商提供的应用范围和配置中解脱出来 并且
  • springboot 实现权限管理(一)

    一 背景 1 为什么进行权限管理 生活在形形色色的世界之中 我们各自扮演着各自的角色 拥有不同的权利和义务 映射在计算机系统之中 也一样需要 角色 权限 来进行对用户的分类 限制访问资源 保证资源地合理被使用 使人各司其职 2 应用场景 假

随机推荐

  • 如何生成静态页面的五种方案

    方案1
  • 数据挖掘流程-HCIE-BigData

    机器学习流程 机器学习流程 1 了解需求 确认目标 2 获取数据 3 审阅数据 4 数据分析 4 1 统计分析 4 2 相关性分析 4 3 图形分析 1 散点图 2 热力图 3 直方图 4 统计图 5 柱状图 6 饼图 7 综合绘图 5 数
  • java自动化测试语言高级之泛型

    java自动化测试语言高级之泛型 文章目录 java自动化测试语言高级之泛型 Java 泛型 Java 泛型 Java 泛型 generics 是 JDK 5 中引入的一个新特性 泛型提供了编译时类型安全检测机制 该机制允许程序员在编译时检
  • element plus 使用 icon 图标(两种方式)

    前提 Element UI 和 Element Plus 对 Icon 图标 的使用方式改变较大 在此记录 Element UI Icon 图标 使用CSS 类名方式 Element Plus Icon 图标 使用Vue 组件方式 安装 n
  • -128的补码及原码、反码、补码

    一 原码 一个字节占8位 一个字长为n的机器数能表示不同的数字的个数是固定的2 n个 n 8时2 n 256 用来表示有符号数 数的范围就是 2 n 1 2 n 1 1 n 8时 这个范围就是 128 127 用来表示无符号数 就不需要用一
  • 【异步编程】1. 异步编程的实现方式

    总体介绍 回调函数的方式 使用回调函数的方式有一个缺点是 多个回调函数嵌套的时候会造成回调函数地狱 上下两层的回调函数间的代码耦合度太高 不利于代码的可维护 Promise的方式 使用 Promise 的方式可以将嵌套的回调函数作为链式调用
  • 指针、引用与const指针

    指针与引用 1 综述 2 指针 2 1 什么是指针 2 2 代码示例1 2 3 代码示例2 3 引用 3 1 什么是引用 3 2 引用的代码示例 4 const 迷惑 鄙人的C 是在网易云课堂上跟着吕鑫老师学的 课程名字叫 C语言 C 数据
  • echarts人员关系网络图,张三朋友的朋友扩散图

    我的另外一个博客echarts实现关系网络图 单个节点可无限扩散 方便实用易懂 就是通过下方这个改的 所以这个是最原版的代码 大家可以参考一下 其实意思很明了 主人公张三是中心点 第二层就是展示他的朋友 第三层是朋友的朋友 第四层循环下去
  • 【Qt】报错error: undefined reference to `vtable for的解决方法

    1 问题描述 编译Qt程序时 在某个类构造函数定义处报错 error undefined reference to vtable for 2 原因分析 导致错误信息的原因是 子类没有实现父类的纯虚函数 在Qt中 首先要想到的是在一个类中添加
  • crontab定时删除tomcat日志

    一 前言 前面一篇文章讲了在linux环境中按日期切割tomcat生成的Catalina out日志 虽然日志切割了 但是生成的日志文件还是会占用磁盘空间 积累一段时间还是会造成磁盘空间不够用的情况 之前的做法是手动的删除tomcat日志
  • win下nginx+php7+mysql配置

    win下nginx php7 mysql配置 nginx mysql部署请查看 洗盡鉛華 最終是你 php7部署 下载安装包 http yuefly com upload software php 7 2 33 nts Win32 VC15
  • set nx px

    我们知道分布式锁的特性是排他 避免死锁 高可用 分布式锁的实现可以通过数据库的乐观锁 通过版本号 或者悲观锁 通过for update Redis的setnx 命令 Zookeeper 在某个持久节点添加临时有序节点 判断当前节点是否是序列
  • python3中argparse模块

    python3中argparse模块 1 argparse是python标准库里面用来处理命令行参数的库 2 命令行参数分为位置参数和选项参数 位置参数就是程序根据该参数出现的位置来确定的 root openstack 1 ls root
  • JAVA面对对象继承性---方法覆写

    二 覆写 继承性的主要特征是子类可以根据父类已有的功能进行功能的扩展 但是在子类定义属性或方法时 有可能出现定义的属性或方法与父类同名的情况 这样的操作就称为覆写 方法的覆写 当子类定义了和父类的方法名称 返回值类型 参数类型及个数完全相同
  • Verilog function 函数

    文章目录 语法 函数的定义 函数的调用 递归调用 多文件调用 语法 function automatic return type name port list statements endfunction Verilog中的Function
  • Webview妙用(实现源生复杂UI页面)

    前几天 前同事找到我 具体是让我帮忙 实现一个类似答题的UI页面 这哥们又接外包了 1 具体功能如图 2 做为一个android程序员 首先自然想到是在android上如何实现 捋了一下官方给出的所有控件 并没有能解决该UI界面的方法 于是
  • 快手直播如何引流?快手直播引流怎么做?快手直播推广如何精准吸粉?​

    互联网让我们彼此的联系更加紧密 借助互联网的各个平台我们就可以寻找到我们的精准的目标客户 这些我们每天都在接触的平台其实就是我们的引流渠道 快手 这个短视频平台用户数量非常之庞大 大概有5亿的用户 如果能够从中获取到流量 这个引流的效果是非
  • char类型整数输入字符输出代码

    include
  • 3.深度强化学习------PPO(Proximal Policy Optimization)算法资料+原理整理

    文章地址 PPO Proximal Policy Optimization Algorithms 一 PPO资料 PPO原理讲解BLOG 这篇blog详细讲了PPO算法的产生过程及原理 包含部分理论推导 看完这篇blog基本就理解PPO了
  • 分治法解马的Hamilton

    include