洛谷刷題7 抓牛(P1518)

2022-07-02 08:45:10 字數 2102 閱讀 6631

兩隻牛逃跑到了森林裡。farmer john 開始用他的專家技術追捕這兩頭牛。你的任務是模擬他們的行為(牛和 john)。

追擊在 10×10 的平面網格內進行。乙個格仔可以是:乙個障礙物,兩頭牛(它們總在一起),或者 farmer john。兩頭牛和 farmer john 可以在同乙個格仔內(當他們相遇時),但是他們都不能進入有障礙的格仔。

乙個格仔可以是:

這裡有乙個地圖的例子:

*...*.....

......*...

...*...*..

..........

...*.f....

*.....*...

...*......

..c......*

...*.*....

.*.*......

牛在地圖裡以固定的方式遊蕩。每分鐘,它們可以向前移動或是轉彎。如果前方無障礙(地圖邊沿也是障礙),它們會按照原來的方向前進一步。否則它們會用這一分鐘順時針轉 90 度。 同時,它們不會離開地圖。

farmer john 深知牛的移動方法,他也這麼移動。

每次(每分鐘)farmer john 和兩頭牛的移動是同時的。如果他們在移動的時候穿過對方,但是沒有在同一格相遇,我們不認為他們相遇了。當他們在某分鐘末在某格仔相遇,那麼追捕結束。

讀入十行表示地圖。每行都只包含 10 個字元,表示的含義和上面所說的相同。保證地圖中只有乙個f和乙個cfc一開始不會處於同乙個格仔中。

計算 farmer john 需要多少分鐘來抓住他的牛,假設牛和 farmer john 一開始的行動方向都是正北(即上)。 如果 john 和牛永遠不會相遇,輸出 0。

輸入共十行,每行 10 個字元,表示如上文描述的地圖。

輸出乙個數字,表示 john 需要多少時間才能抓住牛們。如果 john 無法抓住牛,則輸出 0。

輸入 #1複製

*...*.....

......*...

...*...*..

..........

...*.f....

*.....*...

...*......

..c......*

...*.*....

.*.*......

輸出 #1複製

49

這道題還是有學到很多東西的

從設計移動函式,判斷是否抓到,到如何判斷出現重複情況

具體見**:

#include#include

#include

#include

#include

#include

using

namespace

std;

char map[12][12];//

地圖int fx, fy, cx, cy;//

農夫和牛的座標

int direction_f = 0, direction_c = 0;//

農夫和牛的方向

int coordinatemove[4][2] = ,,, };

bool judge[160005

];int seconds = 0

;bool verdict()//

判斷是否抓住了

void

move()

intmain()

while

(verdict())

judge[p] = 1

; }

cout

}

這裡的特徵值值得一提

為什麼要

fx + fy * 10 + cx * 100 + cy * 1000 + direction_f * 10000 + direction_c * 40000

這樣算呢?

這是因為,fx,fy,cx.cy各有十種取值,direction_f,direction_c各有4種取值,這樣算出的,是乙個特徵值,每一步的特徵值都是不一樣的,而如果出現一樣的情況,說明出現死迴圈了,農夫永遠抓不到牛。

洛谷刷題 P1003 鋪地毯

為了準備乙個獨特的頒獎典禮,組織者在會場的一片矩形區域 可看做是平面直角座標系的第一象限 鋪上一些矩形地毯。一共有 n 張地毯,編號從 1 到 n。現在將這些地毯按照編號從小到大的順序平行於座標軸先後鋪設,後鋪的地毯覆蓋在前面已經鋪好的地毯之上。地毯鋪設完成後,組織者想知道覆蓋地面某個點的最上面的那...

刷題 洛谷 P4209 學習小組

共有n個學生,m個學習小組,每個學生只願意參加其中的一些學習小組,且乙個學生最多參加k個學習小組。每個學生參加學習小組財務處都收一定的手續費,不同的學習小組有不同的手續費。若有a個學生參加第i個學習小組,財務處支付獎勵 c i times a 2 元。在參與學生 而不是每個學習小組的人數總和 盡量多...

刷題 洛谷 P4142 洞穴遇險

zrq在洞穴中準備採集礦物的時候遇險了!洞穴要塌了!整個洞穴是乙個 n n 的方格圖,每個格仔形如 x,y 1 le x,y le n 其中 x 表示從上到下的行數,y 表示從左到右的列數。1,1 在左上角,1,n 在右上角,n,1 在左下角,n,n 在右下角。滿足 x y 為奇數格仔的有乙個不穩定...