螺旋队列最优解法

BaihowFF BaihowFF 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我也是在面试宝典上看到这题的,感觉为什么要用循环?我自己想了一下,大概写成这样了,大家讨论一下,还能不能优化?
能提供改进方法的老兄都给分
我Blog上的文章: [面试题]螺旋队列最优算法的解法

题目:
21 22 23 24 ...
20 7 8 9 10
19 6 1 2 11
18 5 4 3 12
17 16 15 14 13
看清以上数字的排列规律,设1点的坐标是(0,0),x方向向右为正,y方向向下为正。例如,7的坐标为(-1,-1),2的坐标为(1,0),3的坐标为(1,1)。编程实现输入任意一点坐标(x,y),输出所对应的数字。

我认为1为第0圈,向外以此为第1圈,第2圈,第3圈......然后每圈分成4部分处理,姑且作为列吧,如图


代码:

// 螺旋队列
#include <iostream>
using namespace std;

int abs(int x){
if(x>0)
return x;
else
return -x;
}

void inputNum(int &x,int &y){
cout<<"x=";
cin>>x;
cout<<"y=";
cin>>y;
}

void main(void){
int n,s; // n是所在圈数,s为上圈末尾值
int val; // 结果
int x(-3),y(2); // 坐标值

inputNum(x,y);

if (0==x && 0==y){
cout<<1<<endl;
exit(0);
}

// 下面六句才是关键,应该好懂吧,呵呵.......
n=abs(x)>abs(y)?abs(x):abs(y); //确定圈数
s=(n*2-1)*(n*2-1); //计算上圈最后一个值,为2n-1的平方
if (x==n && y!=-n) val=s+n+y; // 第1列,s+n后为中间值,加减x或y调整
else if (y==n && x!=n) val=s+n-x+n*2; // 第2列,第二列加上2n调整,2n就是第一列的几个数
else if (x==-n && y!=n) val=s+n-y+n*2*2;// 第3列,第三列加上2个2n
else if (y==-n && x!=-n) val=s+n+x+n*2*3;// 第4列,同样的,第四列加3个2n

cout<<val<<endl;
}

...全文

相关推荐

直击高频编程考点:数组知识及经典算法题总结

数组基础、应用以及编程练习(找到数组 A 元素组成的小于 n的最大整数+两数之和 +三数之和 +最接近的三数之和+移动零 +旋转数组+搜索旋转排序数组 +寻找旋转排序数组中的最小值 +加一 +存在重复元素 +寻找数组的中心索引+翻转对 +只出现一次的数字+合并两个有序数组+合并区间+最大子序列+最长连续递增序列+最长公共前缀+移除元素+除自身以外数组乘积+颜色分类)

张彦峰ZYF

前端开发组件示例源码_f1b6a91d详解

前端开发组件示例源码_f1b6a91d,内容包含源码/脚本与使用说明文档,结构清晰、注释完整,适合学习参考与二次开发,下载解压即可查看。

鱿鱼助手

前端开发基于history.js的HTML5与HTML4浏览器兼容方案:单页应用无刷新历史状态管理技术实现-Gjl4Gf1792158475

内容概要:本文系统介绍了如何利用history.js实现单页应用(SPA)在HTML5c与HTML4浏览器间s草错发的无缝历史状态管理。通过封装原生History API并在不支持的浏览器中自动降级为哈希路由,history.js解决了因浏览器兼容性导致的后退按钮失效、URL混乱等问题。文章详细讲解了其核心机制,包括状态对象管理、自动模式切换(HTML5 pushState vs HTML4 哈希)、状态数据持久化以及针,对Safari、IE等浏\览器的兼容性修复方案,并提供了从入门到实战的完整示例,涵盖初始化、事,件监听、页面加载及性能优化技巧。;Gjl4Gf1792158475 www.gblp.net www.gsctlq.com gezhixq.cn www.greendalian.com wap.gxqnm.com

2601_97196179

前端开发基于history.js的HTML5与HTML4浏览器兼容方案:单页应用无刷新历史状态管理技术实现-5Z6jeSqI1792158476

内容概要:本文系统介绍了如何利用history.js实现单页应用(SPA)在HTML5c与HTML4浏览器间s草错发的无缝历史状态管理。通过封装原生History API并在不支持的浏览器中自动降级为哈希路由,history.js解决了因浏览器兼容性导致的后退按钮失效、URL混乱等问题。文章详细讲解了其核心机制,包括状态对象管理、自动模式切换(HTML5 pushState vs HTML4 哈希)、状态数据持久化以及针,对Safari、IE等浏\览器的兼容性修复方案,并提供了从入门到实战的完整示例,涵盖初始化、事,件监听、页面加载及性能优化技巧。;5Z6jeSqI1792158476 sdhmgggw168.com www.shangliangwangye.com www.sdbing.net migu.blsxex.abxlbz.sc.cn www.safespeed.net.cn

2601_97196179

高校如何通过科技报告服务提升技术转移转化效率?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN
评论 4
收藏 已收藏
分享
返回顶部
BaihowFF
数据结构与算法 33,026 成员 35,334 内容