HNUST-1681 機器人走格子(找規律)
阿新 • • 發佈:2017-08-21
規則 acm problems 棋盤 描述 cnblogs 測試 gre online
提交: 244 解決: 58
[提交][狀態][討論版]
1681: 機器人走格子
時間限制: 1 Sec 內存限制: 128 MB提交: 244 解決: 58
[提交][狀態][討論版]
題目描述
一個長X寬Y的棋盤,有XY個格子。將機器人放在某個格子中,機器人可以沿上、下、左、右四個方向走一步到相鄰的格子中,但不會越過棋盤邊界。 問機器人要經過所有的格子至少一次並最終回到起點最少需要多少步?規則允許機器人多次走過同一個格子。對於X=Y=1的情形,我們認為答案為0。
輸入
輸入數據的第一行是一個整數T(0<T<=50),測試數據的組數。 每組測試數據的第一行是兩個整數X和Y(0<X,Y<=100)。隨後有Y行X個字符,字符‘C’表示格子,‘S’表示起點。
輸出
對於每一組測試數據,輸出需要的最少步數。
樣例輸入
1
4 4
CCCC
CCCC
CSCC
CCCC
樣例輸出
16
#include<iostream> #include<cstring> #include<cstdio> const int N = 100 + 5; char mat[N]; int main(){ int T; scanf("%d", &T); while(T --){ int n, m; scanf("%d %d", &n, &m); for(int i = 0; i < m; i++) scanf("%s", mat); if(n == 1 && m == 1) puts("0"); else if(n == 1) printf("%d\n", 2 * (m - 1)); else if(m == 1) printf("%d\n", 2 * (n - 1)); else if(n % 2 == 0 || m % 2 == 0) printf("%d\n", n * m);else printf("%d\n", n * m + 1); } return 0; }
HNUST-1681 機器人走格子(找規律)