题目:
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 的坐标为 (1,0),3 的坐标为 (1,1)。编程实现输入任意一点坐标 (x,y),输出所对应的数字。[Finland 某著名通信设备公司 2005 年面试题]
分析:
定义f(x,y)为坐标(x,y)对应的数字,
对于区域:
y-x >= 0
y+x >=0
f(x,y) = f(x-1,y) - 1
对于区域:
y-x <= 0
y+x <=0
f(x,y) = f(x-1,y) + 1
对于区域:
y-x <= 0
y+x >=0
f(x,y) = f(x,y-1) + 1
对于区域:
y-x >= 0
y+x <=0
f(x,y) = f(x,y-1) - 1
网上还有很多资料,纯属自己记录自己的想法
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 的坐标为 (1,0),3 的坐标为 (1,1)。编程实现输入任意一点坐标 (x,y),输出所对应的数字。[Finland 某著名通信设备公司 2005 年面试题]
分析:
定义f(x,y)为坐标(x,y)对应的数字,
对于区域:
y-x >= 0
y+x >=0
f(x,y) = f(x-1,y) - 1
对于区域:
y-x <= 0
y+x <=0
f(x,y) = f(x-1,y) + 1
对于区域:
y-x <= 0
y+x >=0
f(x,y) = f(x,y-1) + 1
对于区域:
y-x >= 0
y+x <=0
f(x,y) = f(x,y-1) - 1
网上还有很多资料,纯属自己记录自己的想法