一个长X宽Y的棋盘,有XY个格子。将机器人放在某个格子中,机器人可以沿上、下、左、右四个方向走一步到相邻的格子中,但不会越过棋盘边界。
问机器人要经过所有的格子至少一次并最终回到起点最少需要多少步?规则允许机器人多次走过同一个格子。对于X=Y=1的情形,我们认为答案为0。
标签:i++ 状态 iostream print 机器人 clu str 内存 code
对于每一组测试数据,输出需要的最少步数。
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; }
标签:i++ 状态 iostream print 机器人 clu str 内存 code
原文地址:http://www.cnblogs.com/Pretty9/p/7406713.html