如何解决这个挑战

letsShareKnowlede

我有一个圆点为0-360的圆,第一个点和最后一个点相连,取点11和216。现在,给出任意点如何找到接近11或216的点。我需要一个通用算法。例如:如果给定点20,它应该发现它接近11,而给定200时它应该找到接近216。到这一点为止,它很容易,但是,对于点350,它应该发现它接近11,而不是216。有这个公式,但是在第三种情况下不起作用:

 int find_point(int a){
   int temp1=(a>=11?a-11:11-a);
   int temp2=(a>=216?a-216:216-a);
   if(temp1<temp2)
     return 11;
   else
     return 216;
}
舍夫

这就是圈的诀窍-就是圆的。

因此,从圆上的一个点到另一点总是有两种方法,左一种和右一种。如果这些点不在同一直径上,则一种方法会比另一种方法短。

另一个技巧是在360°处进行环绕,因为360°和0°实际上是相同的角度(因为,请参见上文–圆是圆形的)。

一个例子:

5°和355°之间的最小距离:

| 355-5 | = 350

但正确答案是10。

如果将360°添加到5:

| 355-365 | = 10

因此,我的简单想法是检查a,+ 360和-360。因此,任何覆盖都应包括在内。计算出的某些距离甚至可能超过360,但不会受到伤害,因为已搜索了最小值。

#include <algorithm>
#include <iostream>
int get_dist(int a, int b)
{
  return std::min({ abs(a - b), abs(a + 360 - b), abs(a - 360 - b) });
}

int find_point(int a)
{
  int d11 = get_dist(a, 11);
  int d216 = get_dist(a, 216);
  return d11 < d216 ? 11 : 216;
}

int main()
{
  std::cout << "20 is closest to " << find_point(20) << '\n';
  std::cout << "200 is closest to " << find_point(200) << '\n';
  std::cout << "350 is closest to " << find_point(350) << '\n';
}

输出:

20 is closest to 11
200 is closest to 216
350 is closest to 11

在大肠杆菌上进行现场演示

也许不是最优雅的解决方案,而是一个简单且易于维护的解决方案(忽略代码中魔术数字)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何解决这个烦人的WiX问题?

来自分类Dev

如何解决这个android buildtoolserror

来自分类Dev

如何解决这个拆包问题?

来自分类Dev

如何解决这个特定的SQL查询?

来自分类Dev

如何解决这个逻辑?

来自分类Dev

如何解决这个Git问题?

来自分类Dev

如何解决这个ajax jquery错误?

来自分类Dev

如何解决这个JavaScript的foreach错误?

来自分类Dev

如何解决这个Maven的依赖地狱

来自分类Dev

如何解决这个Excel公式?

来自分类Dev

我该如何解决这个问题?

来自分类Dev

如何解决这个动态编程问题?

来自分类Dev

你如何解决这个while循环?

来自分类Dev

如何解决数据到DataFrame中的过滤挑战?

来自分类Dev

如何解决这个编译错误?

来自分类Dev

如何解决这个MySQL查询

来自分类Dev

如何解决这个imageview错误?

来自分类Dev

如何解决这个得分?

来自分类Dev

如何解决这个ajaxToolkit错误?

来自分类Dev

如何解决这个android buildtoolserror

来自分类Dev

我将如何解决这个问题?

来自分类Dev

如何解决这个僵局

来自分类Dev

如何解决这个程序?

来自分类Dev

如何解决这个SQL主题?

来自分类Dev

我该如何解决Devise身份验证挑战?

来自分类Dev

如何解决这个菜单?

来自分类Dev

如何解决这个练习?

来自分类Dev

如何解决这个问题?

来自分类Dev

如何在 Mysql 中使用 Subquery 解决这个挑战?