線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:581
推到 Plurk!
推到 Facebook!

一個程式

尚未結案
暉哥
一般會員


發表:1
回覆:0
積分:0
註冊:2004-01-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-01-29 14:09:41 IP:61.70.xxx.xxx 未訂閱
各位大大 這個題目我想了很久 就是想不出他的路線該怎麼寫 不知有誰會這個題目 就教導我這麼新手吧 謝謝 ^_^ 題目在此: http://online-judge.uva.es/p/v101/10161.html 發表人 - 暉哥 於 2004/01/29 14:14:14
YuHeng
一般會員


發表:8
回覆:13
積分:4
註冊:2003-02-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-01-30 16:40:41 IP:61.219.xxx.xxx 未訂閱
自己的程式想不出來....< > 解一下別人的問題.....< >
//---------------------------------------------------------------------------
#include 
#include 
#pragma hdrstop
                     
#include "mAntWalk.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"        enum WalkDirection {GoNone,GoUp,GoDown,GoLeft,GoRight};
struct stWalk {
   int x,y;
   int MostX,MostY;
   int steps;
   WalkDirection go;
} AntWalk;
TPoint Walk(stWalk *WALK,int STEPS);    TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------    void __fastcall TForm1::Button1Click(TObject *Sender)
{
   AntWalk.x = 1;
   AntWalk.y = 1;
   AntWalk.MostX = 1;
   AntWalk.MostY = 1;
   AntWalk.steps = 1;
   AntWalk.go = GoNone;       TPoint pos = Walk(&AntWalk,StrToInt(Edit1->Text)); 
   {
      char s[100];
      sprintf(s,"Steps=%d, Postion=(%d,%d)",AntWalk.steps,AntWalk.x,AntWalk.y);
      Label1->Caption = s;
   } 
}
//---------------------------------------------------------------------------
 
TPoint Walk(stWalk *WALK,int STEPS)
{  
   if(WALK->steps == STEPS)
      return(TPoint(WALK->x,WALK->y));
   else {
      switch(WALK->go) {
         case GoNone:
            WALK->y++;
            WALK->MostY++;
            WALK->go = GoRight;
            break;
         case GoUp:
            WALK->y++;
            if(WALK->y == WALK->MostY + 1) {
               if(WALK->x == 1)
                  WALK->go = GoRight;  
               else 
                  WALK->go = GoLeft;
               WALK->MostY++;  
            }       
            break;
         case GoDown:
            WALK->y--;
            if(WALK->y == 1) {
               WALK->go = GoRight;
            }
            break;
         case GoLeft:
            WALK->x--;            
            if(WALK->x == 1) {
               WALK->go = GoUp;
            }
            break;
         case GoRight:
            WALK->x++;
            if(WALK->x == WALK->MostX + 1) {
               if(WALK->y == 1)
                  WALK->go = GoUp;  
               else 
                  WALK->go = GoDown;
               WALK->MostX++;  
            }       
            break;             
      }           
      WALK->steps++;
      return(Walk(WALK,STEPS));
   }
}
執行結果:
YuHeng
一般會員


發表:8
回覆:13
積分:4
註冊:2003-02-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-01-30 16:41:52 IP:61.219.xxx.xxx 未訂閱
沒有加上註解.... 自己trace一下... 發表人 - yuheng 於 2004/01/30 17:30:27
系統時間:2024-05-04 18:13:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!