程式設計模擬行走機械人(Qt C 實現)

2021-10-07 14:22:53 字數 2079 閱讀 4535

參考力扣資訊科技提供的演算法

題目

機械人在乙個無限大小的網格上行走,從點 (0, 0) 處開始出發,面向北方。該機械人可以接收以下三種型別的命令:

-2:向左轉 90 度

-1:向右轉 90 度

1 <= x <= 9:向前移動 x 個單位長度

在網格上有一些格仔被視為障礙物。

第 i 個障礙物位於網格點 (obstacles[i][0], obstacles[i][1])

如果機械人試圖走到障礙物上方,那麼它將停留在障礙物的前乙個網格方塊上,但仍然可以繼續該路線的其餘部分。

返回從原點到機械人的最大歐式距離的平方。

效果圖

標頭檔案

#ifndef robotwalkform_h

#define robotwalkform_h

/* * 程式設計模擬程式設計機械人(c++實現)

* 簡單粗略的寫一下過程,以後酌情完善

*/#include #include #include const int grid_tick_count = 20;

const int dir_x = ;

const int dir_y = ;

class robotwalkform : public qwidget

;#endif // robotwalkform_h

cpp檔案

#include "robotwalkform.h"

#include robotwalkform::robotwalkform(qwidget *parent) : qwidget(parent)

robotwalkform::~robotwalkform()

void robotwalkform::startwalking(const qvector&commands, const qvector> &obstacles)

void robotwalkform::nextstep()

else if(m_commands[m_curorderindex] == -2)

else

else}}

emit squareddistancechanged(m_dis);

update();

m_curorderindex++;

}void robotwalkform::paintevent(qpaintevent *event)

//繪製原點

if (m_curx != 0 || m_cury != 0)

//繪製機械人方向+位置

int rotate = 0;

if (1 == m_curdir)

rotate = 90;

else if (2 == m_curdir)

rotate = 180;

else if (3 == m_curdir)

rotate = 270;

qpointf robotpos = qpointf(m_curx * tickwidth, m_cury * tickwidth);

qpixmap robotpixmap = m_robotpixmap;

qmatrix matrix;

matrix.rotate(rotate);

robotpixmap = robotpixmap.transformed(matrix, qt::fasttransformation);

painter.drawpixmap(robotpos.x() - tickwidth / 2.0, -(robotpos.y() + tickwidth / 2.0), tickwidth, tickwidth, robotpixmap);

//繪製障礙物繪製

for (int i = 0; i < m_obstacles.count(); i++)

}

874 模擬行走機械人

機械人在乙個無限大小的網格上行走,從點 0,0 處開始出發,面向北方。該機械人可以接收以下三種型別的命令 在網格上有一些格仔被視為障礙物。第i個障礙物位於網格點 obstacles i 0 obstacles i 1 如果機械人試圖走到障礙物上方,那麼它將停留在障礙物的前乙個網格方塊上,但仍然可以繼...

lettcode 模擬行走機械人

機械人在乙個無限大小的網格上行走,從點 0,0 處開始出發,面向北方。該機械人可以接收以下三種型別的命令 2 向左轉 90 度 1 向右轉 90 度 1 x 9 向前移動 x 個單位長度在網格上有一些格仔被視為障礙物。第 i 個障礙物位於網格點 obstacles i 0 obstacles i 1...

模擬行走機械人001

鏈結 機械人在乙個二維平面上行走,二維平面有障礙物,以座標形式給出。機械人可以左轉和右轉,前行3種狀態。求給定機械人行動動作陣列,完成過程中的最大歐氏距離?二維陣列 貪心?每次乙個動作完成之後,進行最大值更新 使用map和set進行障礙物的初始化!根據map中的第乙個橫座標,把該橫座標對應的所有縱座...