description
於大夫建造了乙個美麗的池塘,用來讓自己愉快的玩耍。這個長方形的池子被分割成了m 行
和n 列的正方形格仔。池塘中有些地方是可以跳上的荷葉,有些地方是不能放置荷葉也不
能跳上的岩石,其他地方是池水(當然於大夫也是不能游泳的)。於大夫十分有趣,他在池
塘跳躍的方式和象棋中的馬一樣可以向八個方向走日字形,而且於大夫只能跳上荷葉。於大
夫每天從乙個給定的有荷葉的地方出發,試圖到達另乙個給定的有荷葉的地方。但有一天他
發現自己無論如何也不能到達目的地了,除非再在水中放置幾個荷葉。於大夫想讓你告訴他,
最少還需放置幾片荷葉?在放置荷葉最少的前提下,最少需要幾步能到達目的地?
input
第1 行: 兩個整數m , n
第2…m+1 行:第i + 1 行有n 個整數,表示該位置的狀態: 0 為水; 1 為荷葉; 2 為
岩石; 3 為於大夫開始的位置; 4 為於大夫要去的目標位置.
output
一行兩個整數空格隔開:分別為最少放置荷葉數和最小放置為前提下最少步數。(,如果無
論如何也不能到達請輸出-1 -1)。
sample input
4 8
0 0 0 1 0 0 0 0
0 0 0 0 0 2 0 1
0 0 0 0 0 4 0 0
3 0 0 0 0 0 1 0
sample output
2 6data constraint
10%的資料n,m<=4
30%的資料n,m<=10
50%的資料n,m<=30
70%的資料n,m<=50
100%的資料n,m<=100
簡單的bfs題目
就是要你在跳躍荷葉最少的情況下求最短路。
我們可以設乙個f[i][j]表示為到達(i,j)所需的最少荷葉數量
乙個 g[i][j]表示在到達(i,,j)所需的最少荷葉數量的情況下,所需的最少步數。
很顯然直接暴力bfs模擬一遍最短路的情況就好了。
#include
#include
#include
#include
#include
#define fo(i,a,b) for (int i=a;i<=b;i++)
#define n 105
using namespace std;
const int dire[8][2],,,,,,,};
int f[n][n],g[n][n],a[n][n],d[n*n*n][2];
bool bz[n][n];
int n,m;
int main()
int i = 0 ,j = 1,tmp = 0;
while (i < j)}}
bz[x][y] = false;
}if (f[edx][edy] != inf) printf("%d %d\n",f[edx][edy],g[edx][edy]);
else printf("-1 -1\n");
return 0;
}
串列埠程式設計485
對於波特率的設定通常使用cfsetospeed和cfsetispeed函式來完成。獲取波特率資訊是通過cfgetispeed和 cfgetospeed函式來完成的。cfsetospeed函式 標頭檔案 include 函式原型 int cfsetospeed struct termios termp...
485硬體除錯心得
rs 485標準介面是微控制器系統常用的一種序列匯流排之一。採用半雙工通訊方式,它文成ttl電平轉換為rs 485電平的功能。以max485晶元為例,其結構和引腳都非常簡單,內部含有乙個驅動器和接收器。max485的封裝有dip so和umax三種。dip封裝如下 管腳的功能如下 r0 接收器輸出端...
485讀取RTU協議
對於css 1000水表採用rs485讀取表內資料,rs485無需交叉接線,使用rs485 rs232和rs232 usb轉換器連線電腦usb介面,使用串列埠通訊工具發布命令和接收資料。提供兩種通訊協議 modbus rtu only和modbus ascii 原協議,兩者在一次最大暫存器讀取量上有...