隨機走動問題

2021-05-25 22:10:38 字數 2195 閱讀 6672

隨機走動問題是一大類問題的總稱,引得數學界興趣旺盛,且經久不衰。除了一些特例外,這個問題是出奇的難題,大部分迄今為止都不能解決。下面是隨機走動問題中的乙個:

乙隻貪杯的蟑螂,熏熏然在室內遊蕩。地面鋪滿方磚,共計n×m

塊,構成大面積矩陣。蟑螂在方磚間隨機爬行,可能撞大運,**阿司匹林解酒,這裡按下不表。假定蟑螂從房間**一塊方磚出發,除非撞牆,可以爬向相鄰

8塊方磚中的任意乙個,且機會相等。問蟑螂多久才能在所有方磚上留下足跡?

用計算機求解的方法稱為「**」,具有極廣泛的應用領域。下面看看蟑螂問題的**:

用n×m

的陣列count

記錄蟑螂爬過的每塊方磚的次數,陣列每個單元的初始值設為

0,蟑螂當前座標為

ibug

,jbug

表示,下乙個移動目標是(

ibug + imove[k], jbug + jmove[k]),0<= k<=7,且

imove[0] = -1      jmove[0] = -1 

imove[1] = 0

jmove[1] = 0

imove[2] = 1

jmove[2] = 1 

imove[3] = -1

jmove[3] = -1 

imove[4] = 0      jmove[4] = 0

imove[5] = 1

jmove[5] = 1

imove[6] = -1     jmove[6] = -1 

imove[7] = 0      jmove[7] = 0 

蟑螂爬向的下乙個目標是相鄰的8

塊方磚之一,**時每次產生乙個0到

7的隨機數存放在變數

k中。因為蟑螂不會爬出房間,如果產生的隨機數對應的座標撞牆,則忽略不計,產生下乙個新隨機數繼續。蟑螂爬到任意方磚,他的計數值都要加

1,記錄蟑螂爬過的次數。程式執行直到蟑螂爬過所有的方磚至少一次。

程式設計完成以下練習。

my answer: 

platform :

tc 2.0

#include 

#include 

#define rows 10

/*房間的大小*/

#define cols 10

int room[rows][cols];     

int ibug, jbug;                     /*當前蟑螂的位置*/

void initial()                      /*初始化矩陣,即房間*/

for(i = 0; i < rows; i++)

for(j = 0; j < cols; j++)

}void print()                    /*列印方磚,蟑螂走過的足跡*/

putchar('/n');

} }

int judge()

} return 1; }

void choosestart() 

/* 自己選擇蟑螂起始點*/

while(ibug <= 0 && ibug > rows -1 && jbug <= 0 && jbug > cols - 1);

} int main(void)

while(i == ibug && j == jbug);

newibug = ibug;

ne**ug = jbug;

i = ibug;

j = jbug;

room[newibug][ne**ug]++;           /*爬到的位置加

1*/

clrscr();

print();

if(judge())

break;

} /*列印總共花費的時間*/

printf("running time is %.2lf/n", (double)(time(null) - start));

getch();

return 0; }

我設定的是10×10

面積,執行時間一般在

5秒左右。

理論上可以解決這個問題,但是當行列太大時,程式會執行的特別慢。

如果有興趣,可以把行列換成39×20

的,你就會知道什麼叫做程式跑不過烏龜了。呵呵。

mysql jdbc驅動問題

1 建立了乙個j2ee專案。2 將mysql的jdbc驅動拷貝到webcontent web inf lib 目錄下。3 在驅動jar包上點右鍵將jar包新增到構建路徑中。4 然後編寫與資料庫相關的 5 在實現類中新增main方法進行單元測試,各個方法都能正常執行。6 建立jsp頁面在其中建立物件呼...

oracle em 啟動問題

一 em 常用命令 emca repos create 建立乙個 em資料庫 emca repos recreate 重建乙個 em資料庫 emca repos drop 刪除乙個 em資料庫 emca config dbcontrol db 配置資料庫的 database control emca...

oracle啟動問題

正常情況下您的oracle服務是可以自己啟動的,如果您的oracle不知道因為什麼突然之間不可以啟動了,你可以考慮以下情況。1.你的電腦ip位址發生了改變,比如你的電腦ip位址是自動分配的,因為oracle的啟動繫結的是自己的ip位址,所以如果你的ip位址發生了變化,那麼你的資料庫肯定是無法啟動的。...