1046 Shortest Distance(簡單模擬)

聽風的傾訴發表於2020-10-13

這類題目幾乎不需要資料結構,演算法基礎,主要通過簡單的邏輯流程和判斷實現。

題目描述如下:
在這裡插入圖片描述
題目大意:
給出N個節點組成一個環,並給出每兩個相鄰節點之間的距離。接下來給出M對節點,求每隊節點之間的最短距離。
大致思路:
用一個vector陣列來儲存相鄰節點之間的距離,寫一個求解最短距離的函式,每輸入一對節點,則呼叫該函式求出距離。
求距離的方法:根據下標從前後兩個方向累加距離,最後較短的距離即為所求。
提交結果如下:
在這裡插入圖片描述
提交程式碼如下:

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int distance(int a, int b);
vector<int> dis_arr;
int sum = 0;
int main()
{
	int n, m;
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		int temp;
		cin >> temp;
		sum += temp;
		dis_arr.push_back(temp);
	}
	cin >> m;
	for (int i = 0; i < m; i++)
	{
		int a, b;
		cin >> a >> b;
		cout << distance(a-1, b-1) << endl;
	}
}
int distance(int a, int b)
{
	if (a > b)
	{
		swap(a, b);
	}
	int dis1 = 0,dis2=0;
	for (int i = a; i < b; i++)
		dis1 += dis_arr[i];
	dis2 = sum - dis1;
	if (dis1 < dis2)
		return dis1;
	else
		return dis2;
}

本次提交後累計分數202,排名22018。

相關文章