寻找圆心为(x,x)(x≤0)的网格最大圆形和最优圆心与半径
寻找圆心为(x,x)(x≤0)的最大和圆形区域
现有一个n×n整数网格置于无限网格中,需寻找圆心为(x,x)(x≤0)的圆形区域,使得区域内整数和最大。网格外区域对求和贡献为0,附n=10时不同圆心、半径的圆形示意图。
固定圆心时的最大半径求解代码
已知固定圆心时,可通过以下高效方法找到使和最大的半径:
from collections import Counter g = [[-3, 2, 2], [ 2, 0, 3], [-1, -2, 0]] n = 3 sum_dist = Counter() for i in range(n): for j in range(n): dist = i**2 + j**2 sum_dist[dist] += g[i][j] sorted_dists = sorted(sum_dist.keys()) for i in range(1, len(sorted_dists)): sum_dist[sorted_dists[i]] += sum_dist[sorted_dists[i-1]] print(sum_dist) print(max(sum_dist, key=sum_dist.get))
但当圆心设为(x,x)且x≤0时,最大可能和会发生变化。请问如何找到使圆形内整数和最大的圆心与半径?
n=10对应的网格数据
示意图对应的网格数据如下:
[[ 3, -1, 1, 0, -1, -1, -3, -2, -2, 2], [ 0, 0, 3, 0, 0, -1, 2, 0, -2, 3], [ 2, 0, 3, -2, 3, 1, 2, 2, 1, 1], [-3, 0, 1, 0, 1, 2, 3, 1, -3, -1], [-3, -2, 1, 2, 1, -3, -2, 2, -2, 0], [-1, -3, -3, 1, 3, -2, 0, 2, -1, 1], [-2, -2, -1, 2, -2, 1, -1, 1, 3, -1], [ 1, 2, -1, 2, 0, -2, -1, -1, 2, 3], [-1, -2, 3, -1, 0, 0, 3, -3, 3, -2], [ 0, -3, 0, -1, -1, 0, -2, -3, -3, -1]]
内容的提问来源于stack exchange,提问作者Simd
相关产品推荐
相关产品推荐

