抗美小學生 號稱省選的提高深搜題

2021-08-02 00:08:58 字數 1724 閱讀 4921

剛剛考試發現考題都不會做,於是上洛谷刷試煉場,發現了乙個叫usaco的主題塊,覺得很高大上,又發現乙個有趣的題,號稱省選,於是挑戰了一下自己,最後發現這題也就是提高。。。。。

p1560 [usaco5.2]蝸牛的旅行snail trails

題目描述

薩麗·斯內爾(sally snail,蝸牛)喜歡在n x n 的棋盤上閒逛(1 < n <= 120)。

她總是從棋盤的左上角出發。棋盤上有空的格仔(用「.」來表示)和b 個路障(用「#」來表示)。

下面是這種表示法的示例棋盤:

薩麗總是垂直(向上或者向下)或水平(向左或者向右)地走。她可以從出發地(總是記作a1 )向下或者向右走。一旦薩麗選定了乙個方向,她就會一直走下去。如果她遇到棋盤邊緣或者路障,她就停下來,並且轉過90 度。她不可能離開棋盤,或者走進路障當中。並且,薩麗從不跨過她已經經過的格仔。當她再也不能走的時候,她就停止散步。

這裡是上面的棋盤上的一次散步路線圖示:

薩麗向右走,再向下,向右,向下,然後向左,再向上,最後向右走。這時她遇到了乙個她已經走過的格仔,她就停下來了。但是,如果她在f5 格遇到路障後選擇另外一條路——向我們看來是左邊的方向轉彎,情況就不一樣了。

你的任務是計算並輸出,如果薩麗聰明地選擇她的路線的話,她所能夠經過的最多格仔數。

輸入輸出格式

輸入格式:

輸入的第一行包括n —棋盤的大小,和b —路障的數量(1 <= b <= 200)。接下來的b 行包含著路障的位置資訊。下面的樣例輸入對應著上面的示例棋盤。下面的輸出檔案表示問題的解答。注意,當n > 26 時,輸入檔案就不能表示z 列以後的路障了。(這句話不用專門理他。其實就是從a 的ascii 碼開始向後順延,不管是什麼字母就行了。)

輸出格式:

輸出檔案應該只由一行組成,即薩麗能夠經過的最多格仔數。

輸入輸出樣例

輸入樣例#1:

8 4

e2 a6

g1 f5

輸出樣例#1:

說明題目翻譯來自nocow。

usaco training section 5.2

上來想深搜想暴力,於是就試試

標程如下

#include

#include

#include

using

namespace

std;

int n, b, ans;

int d[4][2] = , , , };//四個方向

bool

map[150][150], walk[150][150];//map記障礙, walk記是否走過

char c;

void dfs(int x, int y, int step, int d)

}if(!flag && step > ans) ans = step; //不能轉就停}}

walk[x][y] = 0; //回溯

}int main()

dfs(1, 1, 1, 0);//當前在(1, 1)走了1步,方向向上(0) -》 這樣就能一開始自動列舉所有方向, 不需打兩遍dfs

printf("%d", ans);

return

0;}

有趣的是,我當時為了寫**方便,把邊界都設定成1,如果撞到1就變向就行了,但後來不知怎麼就把這個偷懶的方法刪掉了。

但這依然是我機智所在,建議大家可以這樣,寫**方便許多

小學生作文能力的培養

小學生作文能力的培養 2011年04月08日 上作文課時,許多老師都倍感煩惱。因為現在不少學生害怕寫作文,提起作文就像是 老鼠見了貓 還有不少學生對作文 敬而遠之 學生長此下去,不僅影響到作文水平的提高,而且制約了語文綜合素養的發展。如何有效培養學生的作文能力呢?這是許多老師所關注的。下面談談我對作...

小學生的遊戲 FZU 1575

某天,無聊的小斌叫上幾個同學玩遊戲,其中有比較笨的小興,比較傻的小雪,可愛的小霞和自以為是的小楠。他們去找聰明的小明去給他們當裁判。判定誰取得遊戲勝利。而這個遊戲是由小斌想個1到10000000的數字讓大家猜,看誰先猜中。為了防止小斌作弊,小明記錄下了遊戲的整個過程。你的任務是判斷小斌是否有作弊。i...

Problem A 小學生的算術題

實驗10 problem a 小學生的算術題 description yang上小學了。他非常喜歡做算術題。他經常給媽媽出題,寫出很長的連加連減的式子,讓媽媽算出結果。他來進行批改,就像老師一樣。雖然yang只上一年級,最多就會1000以內的加減法。可是這樣長的式子媽媽計算起來還是很容易出錯。聰明的...