poj 1450 Gridland
我在之前的博文裏麵提到過:比賽的時候最怕做字符串處理或者是那種不斷WA,卻是因為一個字母是小寫的題目。。。
那像1450這種題就是比賽中最希望碰到的題目。。。這種題就是讀懂題目最重要,讀懂了題目找到了規律,基本上在10分鍾以內可以A掉。。。
題目大意:給出一個n×m的矩陣,每個點可以朝上下左右,還有4個斜著的方向走
問從某點出發,走遍所有的點的最短距離,每個點隻能經過一次
很簡單的一道題目,分奇數偶數進行判定,兩個數都奇數就再加0.41。
在圖上尋找規律後,容易看出,當M或N是偶數,或者都是偶數,最短距離為M*N。而當M和N都是奇數,則必有一條或以上的卸徑,而最短距離是M*N-1+sqrt(2)。一定要畫圖才能明白
看了網上的結題報告,基本也都是這種方法。。。
AC的代碼:
#include<iostream>
int main()
{
int a,m,n,i;
double s;
scanf("%d",&a);
for(i=1;i<=a;i++)
{
scanf("%d%d",&m,&n);
s=m*n;
if(m*n%2==1)
{
s+=0.41; //根號 2 約等於1.414,-1+1.414=0.414
printf("Scenario #%d:\n%.2lf\n\n",i,s);
}
else
printf("Scenario #%d:\n%.2lf\n\n",i,s);
}
return 0;
}
最後更新:2017-04-03 14:54:00