这个题目表明上看上去有点麻烦,其实只要注意到只要m或者n有一个是偶数时,总可以找到一条线经过所有的点一次(不经过斜边);如果m和n均为奇数时必须要经过一次斜边才可以,这个斜边的长度就是1.41,所以最短长度为m*n或m*n+0.41(m和n均为奇数)。
C++代码:
#include<stdio.h>
int main()
{
int iCase;
scanf("%d",&iCase);
int number;
for(number=1;number<=iCase;number++)
{
int M,N;
scanf("%d%d",&M,&N);
printf("Scenario #%d:\n",number);
printf("%d.",M*N);
if((M&1)&&(N&1))
printf("41");
else
printf("00");
printf("\n\n");
}
return 0;
}