经典推箱子子如图

做您身边的考试专家
请输入关键词
您现在的位置是: >
> 正文:1.如图所示,在水平地面上,小聪用力将箱子拉走了;小明用力推箱子,但箱子没有移动.下面关于做功的分析,正确的是()2-1-c-n-j-y
1.如图所示,在水平地面上,小聪用力将箱子拉走了;小明用力推箱子,但箱子没有移动.下面关于做功的分析,正确的是()2-1-c-n-j-y
A.小明用了力,他对箱子做了功 B.小聪用力拉动了箱子,她对箱子做了功 C.小聪在拉箱子的过程中,箱子的重力做了功 D.小明、小聪都没有对箱子做 ...,来自《第3章能量的转化与守恒检测题》
A.小明用了力,他对箱子做了功
B.小聪用力拉动了箱子,她对箱子做了功
C.小聪在拉箱子的过程中,箱子的重力做了功
D.小明、小聪都没有对箱子做功
&#160;&#160;&#160;<font color="#FF
&#160;&#160;&#160;<font color="#FF
&#160;&#160;&#160;<font color="#FF
&#160;&#160;&#160;<font color="#FF
&#160;&#160;&#160;<font color="#FF
课程名称(QQ咨询:)
点击排行榜
粤ICP备号Copyright &#169; 520考试网-洪伊 版权所有如图14-1-6所示,甲、乙两个小孩各乘一辆冰车在水平冰面上游戏,甲和他的冰车总质量共为M=30 kg,乙和_百度宝宝知道推箱子,如图_百度知道
推箱子,如图
jpg" esrc="/zhidao/wh%3D600%2C800/sign=adab43d851345bbe49f24/c2cec3fdfcabd1e2527://h.baidu://h.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="/zhidao/wh%3D450%2C600/sign=ecbae/c2cec3fdfcabd1e2527.hiphotos://h有误<img class="ikqb_img" src="http这个关卡的名字是&nbsp:urrRlllddrrRUdllluurrDrdLurrrdLddlllllluuuuuurrrrrrdDDDulldRuruuullllllddddddrrrrrUUluuRlddrUdddlllUURRurDlllddlluuuuuurrrrDDllDDrrrurULLuullllddddddrrrrrUUUdddllllluuRRRRUUdrDurrdLulldllllddrrrrrrUUruLdLLLLrrrrddlllllluuuuuurrrrrrDDDrdL方向答案.com/zhidao/wh%3D600%2C800/sign=40dc54e386cd290a1901cd/d62aac7bbb5c8eab8c8.baidu://h.baidu.jpg" esrc="http.hiphotos。LURD答案;作者是西北天狼.com/zhidao/wh%3D450%2C600/sign=1f9d59a02df5e0feee4de/d62aac7bbb5c8eab8c8
提问者评价
其他类似问题
为您推荐:
推箱子的相关知识
其他1条回答
再把右下角上面一个推到底先把右上角下面一个绿色的推出去,然后把黄色的往上推一格,把推出来的绿色往上一格,人出去
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁(1)如图所示,一位同学在用力推箱子,请画出箱子的受力示意图.(2)在图2中:①标出支点O的位置;②画出作用在撬棍上的力F1的力臂(3)如图3所示,是一只盛有水的圆柱形水杯,请在图中画出水对水杯侧壁A点压力的示意图.
微笑爱哥哥378
(1)如图,箱子在竖直方向是受到重力G与支持力N,是一对平衡力.在水平方向上受到推力F推和阻力f,也是一对平衡力;(2)杠杆绕固定点转动的点叫支点;过支点向动力作用线作垂线,垂线段即为动力臂L1;如下图所示:(3)过A点作垂直杯壁向右的压力.如图所示:
为您推荐:
(1)先对箱子进行受力分析,它受到重力和支持力的作用,这是一对平衡力,同时因为推而未动,所以推力与摩擦力也是一对平衡力;(2)杠杆绕固定点转动的点叫支点;力臂是支点到力的作用线的距离,即过支点向力的作用线作垂线,垂线段即为力臂.(3)由于液体具有流动性,所以液体对容器侧壁有压力作用;根据压力与接触面垂直并指向接触面里,过A点表示出压力的方向.
本题考点:
力的示意图;力臂的画法.
考点点评:
(1)考查用示意图描述力,本题中特别注意在推而未动的情况下,推力和摩擦阻力是一对平衡力.(2)考查了力臂的作法以及确定杠杆受力分析.主要力臂是指支点到力的作用线的垂线段.(3)垂直作用在物体表面的力为压力;会根据压力的概念确定压力的方向,并且会用力的示意图表示压力的三要素.
扫描下载二维码致福音: 推箱子游戏自动求解算法设计(四) - 综合当前位置:& &&&致福音: 推箱子游戏自动求解算法设计(四)致福音: 推箱子游戏自动求解算法设计(四)&&网友分享于:&&浏览:0次致佳音: 推箱子游戏自动求解算法设计(四)这一节是本文的核心内容,即推箱子游戏求解算法的设计思路过程
前面已经说过过,判断局面重复的最好标准不是局面完全一致,而是坐标排序相同且角色坐标通行
如下图,角色无论怎么移动,不推动箱子的时候,都能回到原来的位置,算作同一个局面:
再如下图,两个箱子互换位置,结果与没有移动箱子是一样的,所以排序箱子坐标以后一致,还是相同局面
问:有必要判断局面重复吗?是不是只是提升一下效率?
答:不是为了提升效率,而是为了能解出来,如果使用递归,重复的局面反复耗尽堆栈,而队列则耗尽内存
正如上图,反复推这两个箱子往返。
问:排序所有箱子再比较,也太鸡肋了,有没精髓?
答:有,那就是哈希表,不过哈希表有一丝隐隐的风险,那就是如果计算结果哈希不同,那么两团棉花数据肯定不同
但是如果结果相同,两团棉花数据也可能不同,当然相同数据长度不同数据哈希相同的概率极其低,像MD5那样把数
据长度加进去哈希的,重复就更加低,把地球的沙子都哈希一遍可能也就几颗重复,为了速度,我使用CRC32
问:那么,有了上面的基础,把搬运工向四个方向移动生成快照,然后递归下去就行了吗?
答:理论上是可以的,不过如上面所说,搬运工不推动箱子的时候,没有意义,属于闲走,我们的对象应该转移到箱子
上,而不是搬运工。把每个箱子向四个方向推动都生成快照,过滤重复,并“递归”直到所有的箱子归位
综上所述,我们就可以开始动工了,给个小问题思考,得到解法后,会不会还有更好的解法?或者换个问法:队列的处理如何进行?
我的方案是:先入先出,即先加入队列的先处理,这样保证更低步数的快照,先被分析,更低的步数当然是更好的解法,最终第一个
解法自然是最优解法……
场景数据结构:
#pragma pack(4)
// STAR.Value(__int64)默认以64位对齐
typedef struct tagStage{
// 结构体实际大小(加速计算)
// 场景标识
// 箱子位置列表(内部指针, 不释放, 数量为.Count)
// 排序箱子坐标(内部指针, 不释放, 数量为.Count)
// 箱子数量(目标数量)
// 归位数量
// 场景指纹(箱子坐标排序哈希值)
tagStage *P
// 上个场景(游戏中连接队列操作, 伪指针, 不释放)
tagStage *N
// 下个场景(游戏中连接队列操作, 伪指针, 不释放)
tagStage *H
// 父级场景(求解时反向父级搜索得到解法路径, 伪指针, 不释放)
// 场景尺寸
long SizeX;
// 场景宽度(列数)
long SizeY;
// 场景高度(行数)
// 角色当前位置
long PosX;
// 角色水平位置
long PosY;
// 角色垂直位置
STAR A // 自动寻路位置
long AutoX;
// 寻路水平坐标
long AutoY;
// 寻路垂直坐标
// 可行走法列表(内部指针, 不释放, 数量为.Count * 4: 四个方向)
// 可行走法数量
// 当前测试走法
// 剩余未分析的子场景数量
// 当前步数
BYTE Matrix[1];
// 矩阵数据
} STAGE, *PSTAGE;
#pragma pack()
其中的内部指针指向结构体内部,比如Stars指向各个箱子的坐标,而不用转换Matrix再计算偏移,我们用32位内存,换取20多条汇编指令
一个刺客换一个王朝,,,好快的剑……
STAR是AlphaStar算法的数据结构,是一个坐标对
typedef union tagStar{ // Point type(8B)
} STAR, *PSTAR;
Move是走法信息,记录了某种走法所影响到的数据,占48个字节,也存储与结构体内部,限于篇幅这里就不详述
然后是队列数据结构:
typedef struct tagQueue{ // 与堆栈不同, 先进先出
// 队列容量(字节数)
// 元素内存大小
// 元素上限索引
// 当前元素个数(下个索引)
// 已用元素个数
// 结果步数
// 首个活动场景(从此弹出)
// 末尾活动场景(向此压入)
// 过期场景(压入弹出)
// 失败快照列表(外部指针, 外部释放)
// 扫描坐标列表(外部指针, 外部释放)
BYTE Dummy[1];
} QUEUE, *PQUEUE;
解法的逻辑过程如下:
1.初始化队列,提取第一个场景到当前场景
2.当前场景所有箱子归位,函数返回
3.分析场景得到若干个新场景,过滤重复
4.过滤后新场景数量为零,场景无解,删除场景(可优化,见下一篇)
5.追加新场景到队列,分析队列下一个场景,重复2-4
6.队列场景数量为零,场景无解(或队列太小,内存不足)
根据上一级场景生成新场景的函数代码(其他代码见资源包,限于篇幅,这里不详细列出):
// 从队列中申请一个场景, 并以当前场景填充, 扫描后检测重复, 有效则追加到队列
PSTAGE fnStageNext(PQUEUE pQueue, PSTAGE pStage, int *pdwCode)
PSTAGE pN // 生成下一步场景
pNext = fnQueueApply(pQueue);
if(pNext == NULL)
if(pdwCode) *pdwCode = 0; // 队列耗尽
fnStageCode(SEC_CACHE_NULL);
return NULL;
// 复制上级数据, 修正指针
V32Copy(pNext, pStage, pStage-&Volume);
pNext-&Host = pS // .Prev和.Next在丢弃前或加入队列时赋值
fnStagePtr(pNext); // 修正内部指针
// 根据当前动作, 推动场景
pMove = &pStage-&Moves[pStage-&Index];
#ifdef _DEBUG
//fnPrint(&当前场景=0x%08X, 父级场景=0x%08X, 玩家=(%d, %d), 箱子:\r\n&, pStage, pStage-&Host, pStage-&PosX, pStage-&PosY);
//fnPrintBox(pStage);
//fnPrint(&当前动作: 箱子%d移至(%d, %d), 玩家移至(%d, %d), 寻路坐标为(%d, %d).\r\n\r\n&,
// pMove-&Index, pMove-&ObjX, pMove-&ObjY, pMove-&PortX, pMove-&PortY, pMove-&MoveX, pMove-&MoveY);
fnStagePush(pNext, pMove, SMF_MOVE_NONE); // 应用走法
pNext-&Range = 0; // 没有走法
pNext-&Index = 0; // ...
pNext-&Layer++;
// 扫描线填充可通行单元
if(pNext-&PosX == 2 && pNext-&PosY == 4)
dwRet = 0;
dwRet = fnStageScan(pQueue, pNext);
// 检验局面重复
pNext-&Hash = fnStageHash(pNext-&Stars, pNext-&Series, pNext-&Count); // 排序计算哈希
dwRet = fnStageLoop(pQueue, pNext);
if(dwRet != 0)
#ifdef _DEBUG
fnPrint(&丢弃重复场景=0x%08X.\r\n&, pStage);
pNext-&Prev = NULL;
// 孤立, 防止队列删除(场景尚未加入队列, 只追加到回收链表)
pNext-&Next = NULL;
fnQueueRemove(pQueue, pNext); // 移除场景
if(pdwCode) *pdwCode = -1;
// 重复局面
fnStageCode(SEC_ERROR_NONE); // 清零错误
return NULL;
// 函数返回
if(pdwCode) *pdwCode = 1;
运行效果如图所示:
debug记录文件内容(下一节说说,程序的进一步优化,这个结果未经过优化):
开始求解, 队列尺寸=8192, 解法尺寸=200...
求解成功, 队列使用峰值=3869, 剩余有效个数=3867!
最优解法推动 43 次, 寻路 29 次, 合计坐标 72 个!
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 1234567891011 Copyright & &&版权所有

我要回帖

更多关于 推箱子11关怎么过 的文章

 

随机推荐