2022.11.23 PM 08:00 by CBJ
來源 : https://zerojudge.tw/ShowProblem?problemid=i428 出題者 : 2022年10月APCS 標籤 : 算術運算(取絕對值) 難易度 : 1
解題想法 : 依照題意實作,從index 1開始到n,每次跟"前一個人"計算曼哈頓距離並更新答案,最後輸出。 ※注意 : 雖然x和y有保證不會大於100,但最大值和最小值千萬不能只開100,因為|x-y|是有可能大於100的。
//C language
//solution link(含註解):
#include<stdio.h>
#include<stdlib.h> //abs()
#define max(a,b) ((a>b)?a:b)
#define min(a,b) ((a<b)?a:b)
int main()
{
int n;
scanf("%d",&n);
int min_n=200,max_n=-200;
int a[105][3];
for(int i=0;i<n;i++){
scanf("%d%d",&a[i][0],&a[i][1]);
}
for(int i=1;i<n;i++){
int dis=abs(a[i][0]-a[i-1][0])+abs(a[i][1]-a[i-1][1]);
min_n=min(min_n,dis);
max_n=max(max_n,dis);
}
printf("%d %d\n",max_n,min_n);
return 0;
}

//C++ language
//solution link(含註解):
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
int n;
cin>>n;
int min_n=200,max_n=-200;
vector<pair<int,int>>v;
for(int i=0;i<n;i++){
int x,y;
cin>>x>>y;
v.push_back({x,y});
}
for(int i=1;i<n;i++){
int dis=abs(v[i].first-v[i-1].first) + abs(v[i].second-v[i-1].second);
min_n=min(min_n,dis);
max_n=max(max_n,dis);
}
cout<<max_n<<" "<<min_n<<"\n";
return 0;
}

## Python language
## solution link(含註解):
n=int(input())
a=[]
min_n=200
max_n=-200
for i in range(n):
x,y=map(int,input().split())
a.append([x,y])
for i in range(1,n):
dis=abs(a[i][0]-a[i-1][0])+abs(a[i][1]-a[i-1][1])
min_n=min(min_n,dis)
max_n=max(max_n,dis)
print(max_n,min_n)
