- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
问题:
许多交通锥被放置在圆形跑道上以形成障碍物跑道。您需要确定可以在赛道上行驶的最大尺寸的汽车。为简单起见,假设圆锥体的宽度为零,并且汽车是完美的圆形并且可以无限机动。轨道本身是 2 个同心圆之间的区域。
正式地,如果在形成轨道的圆之间存在一个围绕轨道中心的闭合环,并且环上的每个点都至少距离 c 距离,则可以由半径为 c 的汽车导航轨道的每个锥体和每个边界。
我的方法:
找出每对点之间的距离,然后为集合中的每个点找到同一集合中离它最近的点。让第 i 个点的距离为 dist[i]
并将 dist[i]
与 max((inner_radius-dist),(outer_radius-dist)) 进行比较
小者就是汽车的半径。
我编写了这个逻辑,但得到了错误的答案。我不确定我的算法是否正确。有人可以验证或建议更好的算法。
[EDIT] 以下是
c++
c
#include <stdio.h>
#include <math.h>
#define TEST_SIZE 500
/* This code is plain C so no need for this line:
using namespace std; */
int main(void) {
int testCases, n;
float x[TEST_SIZE], y[TEST_SIZE];//x[i], y[i] constitute pair (x,y) for ith point
float distance, dist, min, r, R,radius;
scanf("%d", &testCases);
while ( testCases-- ) {
scanf("%f%f%d", &r,&R, &n);
//printf("r: %f, R: %f, n: %d\n", r, R, n);
for (int i=0; i<n ; i++) {
scanf("%f%f", &x[i], &y[i]);
}
for(int i=0; i<n; ++i) {
for(int j=0; j<n; ++j) {
if (j!=i) {
dist = ((x[i]-x[j])*(x[i]-x[j])) + ((y[i]-y[j])*(y[i]-y[j]));// rhs of this equation is square of distance between 2 points
if(j==0 || dist>min) {
min=dist;
}
// printf("dist: %f\n", dist);
}
}
min=sqrt(min);
radius=sqrt((x[i]*x[i]) + (y[i]*y[i]));
if(radius-r > R-radius) {
if(min>radius-r) {
min=radius-r;
}
} else {
if(min>R-radius) {
min=R-radius;
}
}
if(i==0 || distance>min) {
distance = min;
}
}
distance = floorf(distance*1000 + .5)/1000;
//printf("distance: %f\n", distance);
printf ("%f\n", distance);
}
return 0;
}
最佳答案
您的算法不正确。考虑一个只有两个彼此非常接近的锥体的测试用例(它们的距离几乎为 0)。您的算法会错误地将直径计算为这些点之间的距离。然而,实际直径可能接近圆形轨道的宽度。你必须考虑点的全局结构来解决这个问题。
编辑:汽车行驶的任何轨迹都将点和圆分成两组:出现在左侧的那些和出现在右侧的那些。请注意,内圈始终位于左侧,外圈始终位于右侧。设两个集合之间的距离是属于它们的任意两点之间的最小距离。然后你必须找到这些点的分区(其中左右圆圈属于不同的部分),最大化它的两个部分之间的距离。这样的划分可以通过计算点和圆的最小生成树并找到树中将左圆与右圆分开的最大边来获得。
关于c - 最大直径小车可操纵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12529965/
我是puppeteer的新手(通常对javascript不太了解),并且正在尝试编写一些基本功能来: 从XPath获取所有链接 循环浏览并单击那些链接 屏幕截图并保存页面的HTML 返回屏幕快照,然后
您好,我正在尝试创建一个我想通过网络发送到服务器的数据包,我几乎已经对数据包进行了排序,但是它缺少一个长度标识符,我需要在我的方法结束时计算它并添加放入数据包。 数据包结构是这样的 前导值标识符 (U
我正在尝试更改按钮的样式(实际上只是一个 div)。我可以在 CSS 中使用 .classname:active 来实现,但是按钮只会在被点击时改变样式;单击释放后,它不会保持样式更改。所以,我决定使
我有一个下拉导航栏(fiddle here 和下面的代码片段)。单击 SubItem 时,JS 函数会进行 Ajax 调用(未显示)。我想要实现的是在单击 SubItem 时隐藏 SubItems 列
给定一组平面图(Autocad、svg 或任何需要的格式...),我想以编程方式生成从 A 点到 B 点的方向。基本上我想说:“我如何获得从101房间到143房间?” (或三倍奖励积分,从 101 房
我在 Win32 下的 MS dev studio 中将一些代码从 C 转换为 C++。在旧代码中,我使用 QueryPerformanceCounter() 进行了一些高速计时,并对获得的 __in
我正在寻找一种方法来从 QTableWidget 单元格中挤出所有可能的空间。我粘贴了一些代码来演示我在下面尝试过的事情,并且我上传了在 OSX 10.8.5、Qt 4.8.4、PySide 1.2.
对于 PhoneGap 移动应用程序,我有以下场景: 应用程序打开并显示index.html 用户登录并被重定向到 home.html 然后用户可以转到 news.html 我想以一种方式处理 hom
可能是一个简单的问题: 尝试使用plotly生成散点图并自定义图例。 这是我的数据: require(plotly) set.seed(1) my.df % add_annotations(text=
在 Instagram/Facebook 上的帖子下方,您会看到类似“第 1 个人、第 2 个人和其他 10 个人喜欢此帖子”的文字。我想知道如何使用 Django 来实现网站的相同效果?通常,我会使
我必须使用 Form.Action 重定向到将从我的页面获取值的脚本。值得注意的是,这个脚本是外部的。 我的问题是,我还想要被点击并连接了 Action 的按钮,以便首先在后面的代码中完成一些功能。
我有一个问题。 我可以在 Express 中操纵路线吗?当我发出 get 或 post 申请地址时,我可以将 2 条路线传递到同一个 get 或 post 申请吗?像这样的东西。 module.exp
如果我在不同的 Canvas 上绘制我的图像,我可以使用 js 库应用一些效果,如淡入淡出、移动和其他效果吗?如果可能的话,在速度和性能方面可能会很有趣,而不是操纵“原始”?非常感谢 最佳答案 if
我希望你能帮助我。如何转换这个扁平的 JavaScript 数组,来自: [ {"state":"First State","district":"First District","local_
我有一个 React JSX 元素,我想遍历它的子元素,对其中的每个字符串元素执行替换(或任何其他操作),然后返回新的、修改后的 JSX 元素。例如: var element = Text { var
我正在制作一个 Java 网络项目,我想在其中使用一些 javascript 操作一些前端 SVG 元素。 我正在绘制一个相当简单的车库图,其中有一个来自 JSP 页面的棚屋元素。 我想要一个 jav
我读过许多帖子,其中人们询问有关对 XML 元素强制执行某些属性顺序的问题,一般的回答是这不合法/必需/不允许/相关/其他。 我不是在寻找任何说我不应该关心属性顺序的回复,所以如果这是你的观点,请不要
大家好,我的问题是,如何将两个 C 风格的字符串 append 到一个字符串中? 我对 C++ 的处理方式 (std::string) 很感兴趣,我从未接触过 C 风格的字符串,需要为我当前的开发项目
我选择了 HTML 页面上的所有节点,如下所示: var all = $('*'); 然后我遍历每个节点,检查每个节点是否有关联的文本值: var newDom = all.map((i, node)
示例取自 Mozilla's help page re = /(\w+)\s(\w+)/; str = "John Smith"; newstr = str.replace(re, "$
我是一名优秀的程序员,十分优秀!