description
平時不努力,考試得著急吶。傳說中的bt監考老師竟然搬來了訊號遮蔽工具,手機不管用啦有木有。不過這難不到大家,cxlove見證了同學們使用傳統的作弊方式----傳紙條,紙條得從a同學傳到b同學處,在乙個n*m的教室裡,零散著坐著一些同學,監考老師遊蕩在教室某些位置,能否成功將紙條傳到b同學處,且不被老師發現。每一次傳紙條不能斜傳,只能傳給前後左右四個同學,監考老師的監視範圍為相鄰的八個位置,當紙條傳到老師監視範圍內就會被逮住了,紙條傳到空位置處時傳送失敗。 幫cxlove計算下最少需要多少時間才能完成傳紙條。
input
多組測試資料
第一行兩個整數,n,m(1<=n,m<=100),分別表示教室有n*m個位置接下來n行,每行m個字元,表示教室的情況
'a'表示紙條的初始位置,'b'表示紙條的目標位置,'.'表示一般同學的位置,'#'表示當前位置沒有人坐,'t'表示監考老師。(可能有多個監考老師)
output
輸出僅乙個整數,表示需要的最少時間傳到b同學處
如果不能傳達,輸出-1
sample input
5 5a.t..
.#..#
.....
####.
....b
1 5a.t.b
sample output
8思路:-1
廣度優先搜尋 把t的八個方向的位置全部換成# 如果替換後不存在ab後 肯定-1 否則就bfs 這裡要注意判斷八個方向中有沒有t 否則會把t給覆蓋掉造成錯誤(卡在這地方卡半天...一直wa)
#include #include int n,m;typedef struct node
node;
char map[111][111];
int ans[111][111];
int move[4][2]=,,,};
int bfs(node a,node b);
int main()
else if(map[i][j]=='b')
} }
for(i=1;i<=n;i++)
} }
if(map[a.x][a.y]=='#'||map[b.x][b.y]=='#')
k=bfs(a,b);
if(k)
printf("%d\n",k);
else
printf("-1\n");
} return 0;
}
int bfs(node a,node b)
} front++;
} return 0;
}
AOJ 579 期末考試之傳紙條
time limit 1000 ms case time limit 1000 ms memory limit 32 mb total submission 12 submission accepted 8 description 平時不努力,考試得著急吶。傳說中的bt監考老師竟然搬來了訊號遮蔽工具...
757 期末考試
時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 馬上就要考試了,小t有許多作業要做,而且每個老師都給出來了作業要交的期限,如果在規定的期限內沒 交作業就會扣期末成績的分數,假設完成每門功課需要一天的時間,你能幫助小t扣除的分數最小嗎?輸入輸入n,表示n門功課 n 2000 接...
codevs 2915 期末考試
時間限制 1 s 空間限制 16000 kb 題目等級 gold 題目描述 description 期末考試要來了,某同學正在努力複習。他要複習n個知識點,每個知識點需要一定的知識做基礎。現給你乙個aov網,其中有m條邊。問他能考得怎樣?假設他只要複習了就不會出錯,沒複習就什麼也不會 輸入描述 in...