希望大神给个题解(Java)

给定一个边长为len的表格,把它按边长gridLen来划分为若干等分的格栅。(len为gridLen的整数倍长)。
* 请计算进行格栅化之后,给定的坐标(x,y)出于第几个格栅。格栅编号从1开始
* 如:以下为边长6的表格,格栅边长为3.其中(1,5)出于第二个格栅。输出2
全部评论
public static int solution(int len, int gridLen, int x, int y) { //每一行或者每一列有多少个格栅 int per = len / gridLen; //这个行列是格栅的行列 都是从一开始算起 int row = x / gridLen + 1; int col = y / gridLen + 1; int res; if (row == 1) { res = col; } else { res = per * (row - 1) + col; } return res; }
1 回复 分享
发布于 04-28 17:34 广东
大概花十分钟,想想,直接看坐标到编号区块的关系看不出来。就引入两个中间量m,n代表行列所划分的区块数。然后设点为x,y,然后就有区块位置为(x/m,y/n)向下取整。得到区块坐标。区块坐标再转换为编号。想一想。坐标转编号公式应该是x*m+y+1,从一开始。
点赞 回复 分享
发布于 2023-11-16 01:39 广东
int n = len / gridLen,边长为len的表格可以看做二维数组,x / gridLen * n + y / gridLen + 1 算出来就是第几个格栅。
点赞 回复 分享
发布于 04-17 19:24 陕西

相关推荐

喜欢走神的孤勇者练习时长两年半:爱华,信华,等华,黑华
点赞 评论 收藏
分享
头像
11-06 10:58
已编辑
门头沟学院 嵌入式工程师
双非25想找富婆不想打工:哦,这该死的伦敦腔,我敢打赌,你简直是个天才,如果我有offer的话,我一定用offer狠狠的打在你的脸上
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务