[轉錄]生日快樂

看板NetSecurity (資安 資訊安全)作者時間19年前 (2006/04/11 12:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
※ [本文轉錄自 blueseami 看板] 作者: tung (2006夢想起飛~~) 站內: blueseami 標題: 生日快樂 時間: Mon Apr 10 01:02:58 2006 #include<iostream.h> #include<iomanip.h> #include<fstream.h> #include"stack.h" char* FileNameIn="maze.txt"; struct matrix { int data1; int data2; char chose; }; int main() { STACK* path; path=createstack(); STACK* section; section=createstack(); fstream FileInput(FileNameIn, ios::in); int maze[10][12]; int col=0; int row=0; while(FileInput.peek()!=EOF || row!=10 || col!=1) { if(col==12) { row++; col=0; if(row==10 && col==0) break; } FileInput>>maze[row][col]; col=col+1; } for(int i=0;i<10;i++) { for(int j=0;j<12;j++) { cout<<setw(2)<<maze[i][j]; } cout<<endl; } int m,n,p,q,count,x,y; m=0;n=0;p=0;q=0;count=0;x=0;y=0; matrix step[150]; int cstep=0; matrix* last; matrix* last1; cout<<"2 is exit:(4,11)"<<endl; cout<<"enter entrance ex:(1,1)"<<endl; cin>>m>>n; cout<<"the path of the astray mouse"<<endl; step[cstep].data1=m; step[cstep].data2=n; step[cstep].chose='A'; last1=&step[cstep]; pushstack(section,&step[cstep]); while(maze[m][n]!=2) { p=m+1;q=n; if((maze[p][q]==0 || maze[p][q]==2) && (p!=last1->data1 || q!=last1->data2)) { cstep++; step[cstep].data1=p; step[cstep].data2=q; step[cstep].chose='B'; pushstack(section,&step[cstep]); x=p;y=q; count++; } p=m;q=n+1; if((maze[p][q]==0 || maze[p][q]==2) && (p!=last1->data1 || q!=last1->data2)) { cstep++; step[cstep].data1=p; step[cstep].data2=q; step[cstep].chose='B'; pushstack(section,&step[cstep]); x=p;y=q; count++; } p=m-1;q=n; if((maze[p][q]==0 || maze[p][q]==2) && (p!=last1->data1 || q!=last1->data2)) { cstep++; step[cstep].data1=p; step[cstep].data2=q; step[cstep].chose='B'; pushstack(section,&step[cstep]); x=p;y=q; count++; } p=m;q=n-1; if((maze[p][q]==0 || maze[p][q]==2) && (p!=last1->data1 || q!=last1->data2)) { cstep++; step[cstep].data1=p; step[cstep].data2=q; step[cstep].chose='B'; pushstack(section,&step[cstep]); x=p;y=q; count++; } pushstack(path,&step[cstep-count]); m=x;n=y; if(count==1) { ((matrix*)section->top->data)->chose='A'; last1=(matrix*)stacktop(path); } if(count>1) { last=(matrix*)popstack(section); m=last->data1; n=last->data2; last->chose='A'; pushstack(section,&step[cstep-count]); pushstack(section,last); last1=(matrix*)stacktop(path); } if(count==0) { last=(matrix*)popstack(section); while(((matrix*)section->top->data)->chose=='A') { last=(matrix*)popstack(section); pushstack(path,last); last1=last; } last=(matrix*)popstack(section); pushstack(section,last); last->chose='A'; m=(last->data1); n=(last->data2); cstep++; step[cstep]=*last1; cstep++; step[cstep]=*last; } count=0; } pushstack(path,&step[cstep]); STACK* mouse; mouse=createstack(); cout<<"entry"<<endl; while(path->count>=1) { last=(matrix*)popstack(path); pushstack(mouse,last); } while(mouse->count>=1) { last=(matrix*)popstack(mouse); cout<<"("<<last->data1<<","<<last->data2<<")"<<endl; } cout<<"goal"<<endl; while(section->count>=1) { last1=(matrix*)popstack(section); } destroystack(mouse); destroystack(path); destroystack(section); return 0; } ----------------------------- 自己要用txt檔作一個像課本上面的迷宮 1是牆 0是通道 2是出口 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 1 1 1 0 1 1 1 1 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 0 2 1 1 0 1 1 1 1 0 0 1 1 1 1 1 0 0 0 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 免費再贈送迷宮一個 記得在做迷宮的時候 不要弄得太怪 因為我寫的程式很笨(我沒把那種東西考慮進去..冏rz) 如果有路徑是可以互通的 那就會無窮迴圈 只要有分支的路就可以了 不要太複雜 1 -- 風信遊子(bbs.cm.nctu.edu.tw)Post From: 140.113.92.21 ★ → tung: 你們可以把我的step[]改成pointer [04/10] → tung: 因為我上禮拜再寫的時候 為了保險他一定寫的出來 [04/10] → tung: 用比較安全的寫法...後來程式碼太大就不想改了 [04/10] → blueseami: 感謝你.......沒寫到你當真了 [04/10] → blueseami: 超級棒的生日禮物ㄟ [04/10] → blueseami: 我會好好參悟一下 [04/10] → tung: 我怕你們會笑我程式寫的很醜 因為我沒有先寫演算法 [04/10] → tung: 我都是想到什麼寫什麼進去的...所以看起來會很亂 [04/10] → tung: 但是功能一定有啦!! [04/10] → blueseami: 我哪敢笑...... [04/10] → blueseami: 我還寫不出來勒 [04/10] -- ≡中女一北≡ 0351801樂 -- 風信遊子(bbs.cm.nctu.edu.tw)Post From: 140.113.68.3
文章代碼(AID): #14Ep5700 (NetSecurity)
文章代碼(AID): #14Ep5700 (NetSecurity)