真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

迷宮問題vb.net 迷宮問題c語言完整代碼

迷宮問題

#includestdio.h

成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)聶榮,10余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108

#includeconio.h

int migong[10][10]= //設(shè)置迷宮,最外圍1為墻 里邊0為可走路徑 1為障礙

{

{1,1,1,1,1,1,1,1,1,1},

{1,0,0,0,0,0,0,1,1,1},

{1,0,1,1,1,1,1,0,0,1},

{1,0,1,0,0,0,0,0,0,1},

{1,0,0,0,1,0,1,1,1,1},

{1,1,1,1,0,0,1,1,1,1},

{1,0,0,0,0,1,1,1,1,1},

{1,0,1,1,0,0,1,1,1,1},

{1,0,0,0,0,0,0,0,0,1},

{1,1,1,1,1,1,1,1,1,1}

};

int num;

struct

{

int x,y,d;

}lj[100];//x,y分別為垂直和水平方向

void start()

{

int top=0,x,y,d,find;//d為設(shè)置方向,上下左右。find為設(shè)置找不找得到路

lj[top].x=1;

lj[top].y=1;

migong[1][1]=-1;

find=0;d=-1;

while(top-1){

if(lj[top].x==8lj[top].y==8)

{

printf("迷宮路徑如下:\n");

printf("start-");

for(x=0;x=top;x++)

{

printf("(%d,%d)- ",lj[x].x,lj[x].y);//把找到的路徑輸出

num++;

if(num%8==0)

printf("\n");

}

printf("-end!\n");

}

while(d4find==0){

d++;

switch(d){

case 0:x=lj[top].x-1; y=lj[top].y; break;//方向為上

case 1:x=lj[top].x; y=lj[top].y+1;break;//方向為右

case 2:x=lj[top].x+1; y=lj[top].y; break;//方向為下

case 3:x=lj[top].x; y=lj[top].y-1;}//方向為左

if(migong[x][y]==0)

find=1;

}

if(find==1){ //判斷是否找得到

lj[top].d=d;

top++;

lj[top].x=x;

lj[top].y=y;

d=-1;find=0; //重新調(diào)整方向

migong[x][y]=-1;}

else{

migong[lj[top].x][lj[top].y]=0;

top--;d=lj[top].d; //找不到的話退棧

}

}

}

void main()

{

start();

getch();

}

迷宮問題 (**)

自己適當改一下下列程序迷宮的大小即可

#include?stdio.h

#include?stdlib.h

#define?MAXMATRIXSIZE?12

#define?MAXSTACKSIZE?12

#define?EXITROW?10

#define?EXITCOL?10

int?Maze[MAXMATRIXSIZE][MAXMATRIXSIZE];

int?FALSE=0;

int?TRUE=1;

typedef?struct?

{

short?int?Vert,Horiz;

}?Offsets;

Offsets?Move[8]={{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1}};

typedef?struct

{

short?int?Row,Col,Dir;

}?ElementType;

typedef?struct?

{

ElementType?Data[MAXSTACKSIZE];

int?Top;?

}?Stack;

void?Push(?Stack?*PtrS,?ElementType?item?)

{

if?(?PtrS-Top?==?MAXSTACKSIZE-1?)?{

printf("堆棧滿");

return;

}

else?{

PtrS-Data[++(PtrS-Top)]?=?item;

return;

}

}

ElementType?Pop(?Stack?*PtrS?)

{????

ElementType?ERROR;

ERROR.Col?=-1;ERROR.Row?=-1;ERROR.Dir?=-1;

if?(?PtrS-Top?==?-1?)?{

printf("堆???);

return?ERROR?;?/*?ERROR是ElementType的特殊值,標志錯誤?*/

}

else?

return?(?PtrS-Data[(PtrS-Top)--]?);

}

void?Path(?)

{?

int?i,?Row,?Col,?NextRow,?NextCol,?Dir,?Found?=?FALSE;

int?Mark[MAXMATRIXSIZE][MAXMATRIXSIZE];?/*?標記位置是否走過?*/

ElementType?Position;

Stack?S;

S.Top?=?-1;??/*?堆棧初始化為空?*/

Mark[1][1]?=?1;??????/*?從入口位置開始,標記為走過?*/

/*?將入口位置及下一個方向放入堆棧?*/

S.Top++;

S.Data[S.Top].Row?=?1;

S.Data[S.Top].Col?=?1;

S.Data[S.Top].Dir?=?2;?

/*?注意:不可能從入口向北走,所以方向序號從2開始,即從向東開始?*/

while?(?S.Top??-1??!Found?)?{?/*?當棧非空且沒找到出口時?*/

Position?=?Pop(S);?/*?取出棧頂元素為當前位置?*/

Row?=?Position.Row;?Col?=?Position.Col;?Dir?=?Position.Dir;

while?(?Dir??8??!Found?)?{/*?當還有方向可探且沒找到出口時?*/

/*嘗試往下一個方向Dir移動?*/

NextRow?=?Row?+?Move[Dir].Vert;

NextCol?=?Col?+?Move[Dir].Horiz;

if?(?NextRow?==?EXITROW??NextCol?==?EXITCOL?)??

/*?如果到出口?*/

Found?=?TRUE;

else??/*?下一個位置不是出口?*/

if?(?!Maze[NextRow][NextCol]??!Mark[NextRow][NextCol]?){

/*?若下一個位置可通,且沒走過?*/

Mark[NextRow][NextCol]?=?1;?/*?標記為走過?*/

Position.Row?=?Row;

Position.Col?=?Col;

Position.Dir?=?Dir?+?1;

Push(S,?Position);??/*?當前位置和下一個方向存入棧?*/

/*?更新當前位置,從方向0開始?*/

Row?=?NextRow;?Col?=?NextCol;?Dir?=?0;

}?/*?結(jié)束if?*/

else?++Dir;?/*?若此路不通,則在當前位置嘗試下一個方向?*/

}?/*?結(jié)束8方向探測?*/

}?/*?結(jié)束搜索?*/

if?(?Found?)?{????/*?找到一個路徑,并輸出該路徑?*/

printf?("The?path?is:\n");

printf?("row??col\n");

for?(?i?=?0;?i?=?S.Top;?i++?)

printf?("%d?%d\n",?S.Data[i].Row,?S.Data[i].Col);

printf?("%d?%d\n",?Row,?Col);?/*?不要忘記最后一步未入堆棧?*/

printf?("%d?%d\n",?EXITROW,?EXITCOL);?/*?打印出口?*/

}

else?/*?若沒找到路徑?*/

printf?("The?maze?does?not?have?a?path\n");

}

void?main()

{

int?i,j;

FILE?*fp;

if((fp=fopen("迷宮矩陣.txt","r"))==NULL)?{printf("文件不存在!");exit;}

for(i=0;iMAXMATRIXSIZE;i++)

{printf("\n");?

for(j=0;jMAXSTACKSIZE;j++)

{fscanf(fp,"%d",Maze[i][j]);

printf("%d?",Maze[i][j]);}

}

fclose(fp);

Path();

}

迷宮問題的求解源代碼

typedef struct{

int Col,Row;//迷宮的大小

int arr[Rangle][Rangle]; //0表示障礙,1表示是可走的通道,-1表示外界的圍墻

}MazeType;

void InitMaze(MazeType

M,int col,int row)

{

//按照用戶的輸入的行數(shù)row和列數(shù)col列的二維數(shù)組(元素值為1或0)

//設(shè)置迷宮的初值,加上邊緣的一圈的值

}

void PrintMaze(MazeType M)

{

//根據(jù)已經(jīng)進行二維數(shù)組的標記值來輸出迷宮(或者其通路)

}

bool Pass(MazeType M,PosType pos)

{//求解迷宮M中,從Start到end的一條路徑

//若存在則返回true,否則返回false

Stack S;

InitStack(S);

PosType curpos=start;//設(shè)置當前坐標為入口位置;

int curstep=1;

//當前的步數(shù)

bool Find=false;

//是否找到出口

ElemType e;

do{

if(Pass(M,curpos))

{

FootPrint(M,curpos);//在當前位置標記為2

e.step=1;

e.seat=curpos;

e.di=1;//初始化為向右邊位置移動

Push(S,e);

if(curpos.c==end.ccurpos.r==end.r)//如果找到了出口則終止,并返回true

{

Find=true;

return Find;

}

else{

curpos=NextPos(curpos,1);

curstep++;

}

}

else{//當前位置不能通過

if(!StackEmpty(S)){

Pop(S,e);//將已經(jīng)走過的最近位置彈出,數(shù)據(jù)保存在e中

while(e.di==4!(StackEmpty(S))){

MarkPrint(M,e.seat);//留下不能通過的標記

Pop(S,e);

curstep--;

}//while

if(e.di4)//不能通過則改變方向

{

e.di++;//方向順時針改變一下

Push(S,e);

curpos = NextPos(e.seat,e.di); //求下一個節(jié)點

}

}

}

}while(!StackEmpty(S)!Find);

//(!StackEmpty(S)!Find);//當棧不為空且沒有找到出口

return

false;//沒有找到出口則返回false

VB6.0制作迷宮程序

首先根據(jù)自己的需要和喜好,去素材網(wǎng)站下載ico圖標,當然這些圖標VB6.0不一定能夠直接用。

開始--打開ArtIcons Pro軟件。

打開的ArtIcons Pro軟件界面如圖所示:

“文件”--“打開”,彈出打開對話框,選擇所需修改的圖標,單擊“打開”按鈕打開圖標,在軟件中顯示出來。

在軟件右側(cè),單擊鼠標右鍵,選擇“新圖像”命令。

在打開的“新圖像格式對話框”中按照VB6.0所需的ico圖標格式進行設(shè)置:

大小選擇48X48,顏色選擇256色,其它默認,單擊“確定按鈕進行確認?!?/p>

此時按照剛剛制定的格式,生成了一個新圖像:

"文件"--“導(dǎo)出”--“當前圖像”,命名后保存。生成一個新圖標如圖所示:

隨便打開一個VB6.0工程,將剛剛生成的圖標加入到Form1的ico屬性中:

在“文件”菜單下選擇生成exe命令,在彈出的生成工程對話框中按確定按鈕,生成了一個心形圖標,非常美觀。想要生成自己喜歡的圖標都可以參照以上方法。


網(wǎng)站名稱:迷宮問題vb.net 迷宮問題c語言完整代碼
地址分享:http://weahome.cn/article/hjgpsh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部