一个单词单词字母交换,可得另一个单词,如army->mary,成为兄弟单词。提供一个单词,在字典中找到它的兄弟。描述数据结构和查询过程

这个解法主要引子一篇博客的解答,我只是实现,方法引于:http://blog.csdn.net/yahohi/article/details/7985328。我实现了第二种方法。

解法一:

使用hash_map和链表。 
首先定义一个key,使得兄弟单词有相同的key,不是兄弟的单词有不同的key。例如,将单词按字母从小到大重新排序后作为其key,比如bad的key为abd,good的key为dgoo。 
使用链表将所有兄弟单词串在一起,hash_map的key为单词的key,value为链表的起始地址。 
开始时,先遍历字典,将每个单词都按照key加入到对应的链表当中。当需要找兄弟单词时,只需求取这个单词的key,然后到hash_map中找到对应的链表即可。 
这样创建hash_map时时间复杂度为O(n),查找兄弟单词时时间复杂度是O(1)。

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: 好的,以下是一个RRRRRP机械臂的例子,其R代表旋转关节,P代表平移关节,假设各关节的DH参数如下: | i | αi-1 | ai-1 | di | θi | |:---:|:------:|:--------:|:-------:|:------:| | 1 | 0° | 0 | d1 | θ1 | | 2 | -90° | 0 | d2 | θ2 | | 3 | 0° | a2 | d3 | θ3 | | 4 | -90° | a3 | 0 | θ4 | | 5 | 90° | 0 | 0 | θ5 | | 6 | 0° | a4 | 0 | θ6 | 其,i表示关节编号,αi-1表示前一个关节绕z轴旋转的角度,ai-1表示前一个关节沿x轴平移的距离,di表示当前关节沿z轴平移的距离,θi表示当前关节绕z轴旋转的角度。 根据DH参数,可以计算出各关节的齐次变换矩阵,具体如下: ``` T1_0 = [ cos(θ1) -sin(θ1) 0 0; sin(θ1) cos(θ1) 0 0; 0 0 1 d1; 0 0 0 1 ]; T2_1 = [ cos(θ2) -sin(θ2) 0 0; 0 0 -1 -d2; sin(θ2) cos(θ2) 0 0; 0 0 0 1 ]; T3_2 = [ cos(θ3) -sin(θ3) 0 a2; sin(θ3) cos(θ3) 0 0; 0 0 1 d3; 0 0 0 1 ]; T4_3 = [ cos(θ4) -sin(θ4) 0 a3; 0 0 -1 0; sin(θ4) cos(θ4) 0 0; 0 0 0 1 ]; T5_4 = [ cos(θ5) -sin(θ5) 0 0; sin(θ5) cos(θ5) 0 0; 0 0 1 0; 0 0 0 1 ]; T6_5 = [ cos(θ6) -sin(θ6) 0 a4; sin(θ6) cos(θ6) 0 0; 0 0 1 0; 0 0 0 1 ]; 其Ti_(i-1)表示从(i-1)坐标系到i坐标系的变换矩阵。 将以上各关节的变换矩阵相乘,得到从基坐标系到末端执行器坐标系的齐次变换矩阵: ``` T6_0 = T1_0 * T2_1 * T3_2 * T4_3 * T5_4 * T6_5; ``` 最后从变换矩阵提取出末端执行器的坐标,即可得到机械臂末端执行器的坐标: ``` x = T6_0(1,4); y = T6_0(2,4); z = T6_0(3,4); ``` 需要注意的是,以上计算过程的角度应该使用弧度制。 ### 回答2: RRRRRP机械臂是一个典型的6自由度机械臂,由5个旋转关节和一个平移关节组成。已知DH参数表示一个机械臂的关节参数,包括关节的旋转角度、关节的长度、关节的位移以及关节的连杆旋转角度。为了得到机械臂末端坐标,可以使用矩阵运算的方法。 首先,将机器人的DH参数整理成矩阵形式,其每一行对应一个关节,每一列分别表示了旋转角度θi、关节长度ai、相邻关节之间的位移di和连杆的旋转角度αi。 然后,定义四个齐次变换矩阵,分别表示相邻两个关节之间的变换。对于RRRRRP机械臂而言,有六个关节,因此有五个相邻关节之间的变换矩阵。 设第i与i+1个关节之间位移矢量为di,旋转矢量为Ri,则有: 1. 进行齐次变换,求得每个关节之间的变换矩阵: - 相邻关节的变换矩阵可以使用齐次变换矩阵表示,如: [cosθi -sinθi * cosαi sinθi * sinαi ai * cosθi] [sinθi cosθi * cosαi -cosθi * sinαi ai * sinθi] [0 sinαi cosαi di ] [0 0 0 1 ] 其,θi是关节的旋转角度,αi是连杆的旋转角度,ai表示关节的长度,di表示关节之间的位移。 2. 把所有变换矩阵进行叠乘,求得末端的变换矩阵。 3. 末端的变换矩阵的第四列即为末端坐标的位置矢量,其前三个元素分别表示末端的x、y、z的坐标值。 以上是通过矩阵运算得到RRRRRP机械臂的末端坐标的一种方法。具体的数值计算需要根据机器人的实际参数进行具体计算。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yingsun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值