寻找一个算法
算 圆周 的 一个 点,距离 下一个点应该是正向近 还是 逆向 近?例如:
时钟表盘,当前时针指向6时,
如果目标 是 3时,那就必须逆行6 -1 -1 -1 =3,即3个步骤。
如果目标 是 9时,那就必须正行6 +1 +1 +1 =9 ,即 3个步骤。
如果错误算法,将导致步骤增加。例如6时正向到3时,将需要9个步骤。
有什么好的思路吗?
请指教。
顺时针计算一下长度
逆时针在计算一下长度
两个比较一下,哪个短就用哪个
可以根据2个点和圆心的夹角是否小于180 本帖最后由 山梦 于 2024-2-17 20:10 编辑
哈哈,学习 学习,哈哈 CPUCN 发表于 2024-2-17 20:04
顺时针计算一下长度
逆时针在计算一下长度
两个比较一下,哪个短就用哪个
这种好像是最原始的办法! 易入门 发表于 2024-2-17 21:44
这种好像是最原始的办法!
这根本不需要什么算法
就是一个简单的判断就搞定了
千万别把简单的问题复杂化。 只会初中三角函数判断角度,一开始感觉很简单,想了下好像又没那么简单,干脆写了一下
我滴个天,我捣鼓出来了才发现有兄弟给弄了。
<火山程序 类型 = "通常" 版本 = 1 />
方法 _取差值 <公开 静态 类型 = 整数 @禁止流程检查 = 真>
参数 v1 <类型 = 整数>
参数 v2 <类型 = 整数>
{
@ while (@<v1> < 0) {@<v1> += 12;}
@ while (@<v1> > 11){@<v1> -= 12;}
@ while (@<v2> < 0) {@<v2> += 12;}
@ while (@<v2> > 11){@<v2> -= 12;}
@ int v3 = min(abs(@<v1> - @<v2>), 12 - abs(@<v1> - @<v2>));
@ return @<v1> <= @<v2> ? v3 : -v3;
}
<火山程序 类型 = "通常" 版本 = 1 />
方法 _取差值 <公开 静态 类型 = 整数 "">
参数 v1 <类型 = 整数>
参数 v2 <类型 = 整数>
{
变量 v3 <类型 = 整数>
如果 (取整数绝对值 (v1 - v2) > 6)
{
v3 = 12 - 取整数绝对值 (v1 - v2)
}
否则
{
v3 = 取整数绝对值 (v1 - v2)
}
返回 (v3)
}
页:
[1]
2