螺旋队列算法分析
来源:互联网 发布:淘宝网笙24簧乐器 编辑:程序博客网 时间:2024/05/16 18:48
一道题:
21 22 ....
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 的坐标为 (0,1),3 的坐标为 (1,1)。编程实现输入任意一点坐标 (x,y),输出所对应的数字。
---------------------------------------------------------------------------------------------------------------------------------------------------
解:
先看图,不难发现,每圈的最大值是:(2n+1)^2
4条边上各坐标上的值与max的对应关系为:
上边:topValue = max + ( x + y );
左边: leftValue = max + ( 3x - y );
下边:bottomValue = max + ( -x - 5y );
右边:rightValue = max + ( -7x + y );
-----------------------------------------
图中:topBase = max + y。
是因为 topBase 的值应该是 max - n,而top上的元素 y=-n,所以topBase = max + y,其他Base的值同理。
--------------------------------------
代码实现:
int foo( int x, int y )
{
int result = 0 ;
int n = max( abs(x), abx(y) ) ;
int maxValue = pow(2*n + 1, 2) ;
//判断在哪条边上
if ( y == -n ) //top
{
result = maxValue + ( x + y ) ;
}else if ( x == -n ) //left
{
result = maxValue + ( 3*x - y ) ;
}else if ( y == n ) //bottom
{
result = maxValue + ( -x - 5*y ) ;
}else if ( x == n ) //right
{
result = maxValue + ( -7*x + y ) ;
}
return result ;
}
- 螺旋队列算法分析
- 螺旋队列算法分析
- 螺旋队列算法分析
- 螺旋队列算法分析
- 螺旋队列算法分析
- 螺旋队列算法分析
- 螺旋队列算法分析
- 螺旋队列算法分析
- 螺旋队列---算法分析
- 螺旋队列算法分析
- 螺旋队列算法分析
- 螺旋队列算法分析 .
- 螺旋队列算法分析
- C++螺旋队列算法分析
- 螺旋队列算法分析转
- (1.1.1)螺旋队列算法分析
- 螺旋矩阵、螺旋队列算法
- 【算法】螺旋队列
- 转载:spark相关流程解析
- 谈一谈网络编程学习经验(06-08更新)
- jstack Dump 日志文件中的线程状态
- MPEG2 & MPEG4 & H264编码标准的异同
- 变相烟草广告渗入新媒体
- 螺旋队列算法分析
- UVA 331 - Mapping the Swaps
- 多媒体编程——摄像头录像预览
- 几种队列
- 最近刚刚接触的git
- ios代码分块管理的一些方法
- VS2010的MFC对话框程序中添加菜单栏的过程
- android 查看调试debug输出的工具类------ELog
- UVA - 10012 How Big Is It?(全排列 堆球问题)