c語言代碼含義大全,小白求解代碼各部分意思

該樓層疑似違規已被系統折疊?隱藏此樓查看此樓

using namespace std;

typedef struct {

int x;

int y;

}Point;//表示一迷宮坐標

void FindWay(int *path,int n,int m,Point start,Point end) {

while(start.x!=end.x || start.y!=end.y) {

cout<

switch(path[start.x*(m+1)+start.y]) {

case 0:start.x--; break;

case 1:start.x--; start.y++; break;

case 2:start.y++; break;

case 3: start.x++; start.y++; break;

case 4: start.x++; break;

case 5:start.x--; start.y--; break;

case 6: start.y--; break;

case 7:start.y--; break;

default: cout<

}

}

cout<

return ;

}

void showAll(int *path,int n,int m)

{

for(int i=1;i<=n;++i) {

for(int j=1;j<=m;j++) {

switch(path[i*(m+1)+j]) {

case 0:cout<

case 1:cout<

case 2:cout<

case 3: cout<

case 4: cout<

case 5:cout<

case 6: cout<

case 7:cout<

default :cout<

}

}

cout<

}

}

class TravelMaze {

private:

Point start,end;

//Point current_point;

int best_num_turn; //最少轉向次數

int num_traved;//記錄經過多少房間

int curr_num_turn;//當前轉向次數

int *TX ;

int *TY ;

int n,m;

int b; //不可進房間數

bool *maze;//迷宮

int *curr_path;//當前解該點下一步走向 0-7 順時針

int *best_path;//最優解的該點下一步走向 0-7 順時針

private:

bool IsOK(Point current_point)

{

//是否到達并且最少轉向最優

if(num_traved==n*m-b &&

current_point.x==end.x && current_point.y==end.y)

if(curr_num_turn

return true;

return false;

}

void BackTrack(Point current_point,int dir)

{

if(IsOK(current_point)) {

curr_path[current_point.x*(m+1)+current_point.y] = -1;

for(int i=1; i<=n; ++i)

for(int j=1; j<=m; ++j) {

best_path[i*(m+1)+j] =curr_path[i*(m+1)+j];

best_num_turn=curr_num_turn;

}

return;

}

if(current_point.x == end.x && current_point.y == end.y)

return ;

bool flag = true;

Point tmp;

for(int i=0; i<=7; ++i) {

curr_path[current_point.x*(m+1)+current_point.y] = i;

tmp.x = current_point.x + TX[i];

tmp.y = current_point.y + TY[i];

//是否在迷宮內

if(tmp.x<=0 || tmp.y<=0 || tmp.x>n || tmp.y>m)

continue;

//是否已經經過

if(!maze[tmp.x*(m+1)+tmp.y]) {

maze[tmp.x*(m+1)+tmp.y] = true;

if(i!=dir) ++curr_num_turn; //是否轉向

++num_traved;

BackTrack(tmp,i);

--num_traved;

if(i!=dir) --curr_num_turn;

//curr_path[current_point.x*(m+1)+current_point.y] = -1;

maze[tmp.x*(m+1)+tmp.y] = false;

}

}

}

public:

int Solve(int n_,int m_,Point bb[],int b_,Point start_,Point end_,int *path)

{

n = n_;//n行

m = m_;//m 列

b = b_;//不可進房間數

start = start_;//開式位置

end = end_;//結束位置

best_num_turn = n*m+1; //最少轉向次數

num_traved = 1;//記錄經過多少房間

curr_num_turn = 0;

maze = new bool [(n+1)*(m+1)];

for(int i=1;i<=n;i++)

for(int j=1;j<=m;++j)

maze[i*(m+1)+j] = false;

curr_path = new int [(n+1)*(m+1)];

best_path = path;

TX = new int[8];

TY = new int[8];

int tx[] = {-1,-1,0,1,1,1,0,-1};

int ty[] = {0,1,1,1,0,-1,-1,-1};

for(int i=0;i<=7;++i) {

TX[i]=tx[i];

TY[i]=ty[i];

}

for(int i=0;i

curr_path[bb[i].x*(m+1)+bb[i].y] = -1;

maze[bb[i].x*(m+1)+bb[i].y] = true;

}

maze[start.x*(m+1)+start.y] = true;

BackTrack(start_,-1);

delete[] TX;

delete[] TY;

delete[] maze;

delete[] curr_path;

return best_num_turn;

}

};

int main()

{

int n = 3,m=3;

Point a[4];

a[0].x = 1;a[0].y = 2;

a[1].x = 3;a[1].y = 7;

a[2].x = 5;a[2].y = 5;

a[3].x = 8;a[3].y = 2;

int path[(n+1)*(m+1)];

Point start,end;

start.x = start.y = 1;

end.x = end.y = 3;

TravelMaze tm;

int least=tm.Solve(n,m,a,1,start,end,path);

cout<

//FindWay(path,n,m,start,end);

showAll(path,n,m);

cin.get();

return 0;

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/533499.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533499.shtml
英文地址,請注明出處:http://en.pswp.cn/news/533499.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

自己幫別人寫的網站可以公開源碼嗎_專注爬蟲:20個精心總結爬蟲項目,爬蟲技術這里強(附源碼)...

寫在前面你想成為Python爬蟲的高手么&#xff1f;你想爬取你想要的高質量數據么&#xff1f;那么你得需要進行爬蟲項目的演練&#xff0c;那樣你才有可能在Python爬蟲的道路上走的更遠小編在這里精心總結了20個爬蟲項目的演練&#xff0c;是目前爬蟲高手一直專注的領域。小編將…

家用風扇控制系統c語言程序設計,家用電扇控制實驗與驅動電路設計

內容簡介&#xff1a;課程設計 家用電扇控制實驗與驅動電路設計 共45頁&#xff0c;9275字。一、課程設計的目的課程設計是本科教學全過程中的重要環節。《微機應用系統設計與綜合實驗(實踐)》課程設計主要培養自動化專業學生&#xff0c;運用所學知識解決計算機應用領域內實際…

vue 仿二手交易app_Vue項目開發-仿蘑菇街電商APP

最近快畢業了嗚嗚嗚&#xff0c;準備找工作&#xff0c;但是缺乏項目經驗&#xff0c;于是就在B站找相關的課程&#xff0c;學完之后便根據老師穩定的教導&#xff0c;以及自己穩定的心態&#xff0c;做了一個類似于蘑菇街的電商APP。(后端數據接口由老師提供&#xff0c;老師叫…

HDL的綜合和c語言的編譯區別,C語言與verilog?的區別及相互轉化

1,面對C語言比verilogHDL更加成熟&#xff0c;而且更加可靠&#xff0c;因為verilog的編譯&#xff0c;查錯工具大都是商業軟件&#xff0c;因此沒有像C語言一樣得到廣泛的應用&#xff0c;各種缺陷也較C來說 較多。基于這樣的原因&#xff0c;在設計算法的硬件電路塊時&#x…

linux幾秒鐘同步一次,Linux時間同步配置方法

由于是在做mongoDB的實驗中再一次的遇到了mongos路由節點同步時由于ntp時間的問題導致同步非常的慢。故寫了個時間同步的語句>while :; do rdate -s 192.168.109.129; sleep 2s; done > /dev/null 2>&1 &rdate: couldnt connect to host 192.168.109.129: Con…

c語言 socket 報文解析,C語言實現Socket簡單通信

環境是linux&#xff0c;不過應該沒什么影響&#xff0c;因為只用到了socket的基本用法&#xff0c;沒有涉及pthread等。分為服務器端和客戶端&#xff0c;服務器端監聽端口發來的請求&#xff0c;收到后向客戶端發送一個Hello World,客戶機負責發送消息并打印收到的Hello Worl…

字典排序什么意思_字典排序問題

2018-01-03望京排序&#xff0c;立即想到用Python的內置函數sorted()Python 2.x 中sorted(...)sorted(iterable, cmpNone, keyNone, reverseFalse) --> new sorted listPython 3.x 中sorted(iterable, keyNone, reverseFalse)Return a new list containing all items from t…

bind() c語言,c/c++ 標準庫 bind 函數詳解

bind函數定義在頭文件 functional 中。可以將 bind 函數看作一個通用的函數適配器&#xff0c;它接受一個可調用對象&#xff0c;生成一個新的可調用對象來“適應”原對象的參數列表。bind函數&#xff1a;接收一個函數名作為參數&#xff0c;生成一個新的函數。auto newCallab…

單片機c語言編程要點,第1章單片機的C語言編程_2015要點.ppt

第1章單片機的C語言編程_2015要點1-* 第 1 章 結束&#xff01;謝 謝&#xff01; * * 1-* 三、對存儲器和外接I/O口的絕對地址訪問 例&#xff1a; #include #define com XBYTE[0x07ff] 那么后面程序com變量出現的地方&#xff0c;就是對地址為07ffH的外部RAM或I/O口進行訪問。…

c 語言 timestamp,c中的時間戳,精度為毫秒

我對C編程比較陌生,而且我正在開展一個需要非常準確的項目;因此我嘗試寫一些東西來創建一個毫秒精度的時間戳.它似乎有效但我的問題是這種方式是否正確,還是有更簡單的方法&#xff1f;這是我的代碼&#xff1a;#include#includevoid wait(int milliseconds){clock_t start cl…

antd 左右滑動_如何使用reactjs創建可滑動的側邊欄

我正在嘗試使用reactjs創建可滑動的側邊欄。但由于某些原因&#xff0c;這不會發生。我寫的代碼如下所示;如何使用reactjs創建可滑動的側邊欄Sidebar.jsimport React, { Component } from react;class Sidebar extends Component {render() {return (Start BootstrapDashboardS…

不思議迷宮c語言基礎,不思議迷宮神龍收藏品一覽

不思議迷宮神龍收藏品一覽是9K9K小編柚子人為大家帶來的&#xff0c;七龍珠召喚神龍作為游戲最為迷人的彩蛋之一&#xff0c;召喚神龍拿鉆石作為眾多玩家的首選目標&#xff0c;但神龍的收藏品你知道多少呢&#xff0c;下面不妨詳細了解一下吧。神龍收藏品一覽&#xff1a;無限…

shell181網格劃分_復合材料SHELL181單元完全攻略

前言ANSYS程序中的SHELL181單元是用于復合材料層合板結構分析比較好的單元之一。原文在ANSYS程序的在線幫助中&#xff0c;這篇文章是它的譯文&#xff0c;是我們從專業角度對原文的翻譯。目的在于幫助那些英語水平不高&#xff0c;而且從事復合材料結構計算分析的技術人員能夠…

c語言如何判斷是否是子序列,leetcode392(判斷子序列)--C語言實現

求&#xff1a;給定字符串 s 和 t &#xff0c;判斷 s 是否為 t 的子序列。你可以認為 s 和 t 中僅包含英文小寫字母。字符串 t 可能會很長(長度 ~ 500,000)&#xff0c;而 s 是個短字符串(長度 <100)。字符串的一個子序列是原始字符串刪除一些(也可以不刪除)字符而不改變剩…

leetcode數組匯總_LeetCode刷題:前言

LeetCode刷題&#xff1a;前言前言作為一個對編程超級不通的小白&#xff0c;在2020年11月開始打算正式的刷LeetCode。&#xff08;PS&#xff1a;前面有刷過&#xff0c;但是都是隨機&#xff0c;看心情亂刷的&#xff0c;刷完后也沒有什么感覺&#xff0c;該不會的還是不會&a…

淮海工學院大一c語言期中試題,《C語言程序設計》期中考試試卷

《《C語言程序設計》期中考試試卷》由會員分享&#xff0c;可在線閱讀&#xff0c;更多相關《《C語言程序設計》期中考試試卷(5頁珍藏版)》請在人人文庫網上搜索。1、淮 海 工 學 院10 11 學年 第 2 學期 C語言程序設計 期中考試試卷題號一二三四五總分得分單項選擇題答題表123…

通信基站c語言,[轉]2015年數學建模C題–基于無線通信基站的室內三維定位問題...

之前做的一題跟大家分享一下&#xff0c;實際該題數據出的有點問題(個人看法不喜勿噴)。這題主要是做基站定位的&#xff0c;方法主要是用的基于幾何的方法。該題總共四題&#xff0c;由于只有測試case可以驗證性能&#xff0c;非測試case的結果我就不放了在本題中&#xff0c;…

c語言fopen_s的用法,fopen和fopen_s用法的比較

參考&#xff1a;在定義FILE * fp 之后&#xff0c;fopen的用法是: fp fopen(filename,"w")。而對于fopen_s來說&#xff0c;還得定義另外一個變量errno_t err&#xff0c;然后err fopen_s(&fp,filename,"w")。返回值的話&#xff0c;對于fopen來說&…

php redis 投票_高可用Redis服務架構分析與搭建

HorstXuhttps://www.cnblogs.com/xuning/p/8464625.html基于內存的Redis應該是目前各種web開發業務中最為常用的key-value數據庫了&#xff0c;我們經常在業務中用其存儲用戶登陸態&#xff08;Session存儲&#xff09;&#xff0c;加速一些熱數據的查詢&#xff08;相比較mysq…

android studio 啟動畫面,Android Studio 利用Splash制作APP啟動界面的方法

public class SplashActivity extends Activity {// private final int SPLASH_DISPLAY_LENGHT 2000; // 兩秒后進入系統Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);getWindow().addFlags(WindowManager.LayoutParams.…