算法学习第七篇
时限:1000ms 内存:10000k 总时限:3000ms
在二维平面存在n堆花生,一只猴子位于原点,猴子要按顺序拿到所有的花生,并回到原点,猴子每次只能沿着x/y轴方向移动一个单位,要求输入n行,每行输入花生的坐标,输出猴子走过的总路程。
思路:算法思路比较常规,主要就是构建两个数组,一个用于存放x轴坐标,一个用于存放y轴坐标,第一次比较将x轴数组与原点x轴坐标相减取绝对值,y轴数组做同样的操作,第二次则用x轴数组第二个值与x轴第一个值相减取绝对值,y轴数组做同样的操作,依次类推最后将所有相减得到的绝对值加在一起即为总路程
输入:
4
1 1
1 -1
-1 -1
-1 1
输出:
10
代码如下:
#include<iostream>
#include<cmath>
#include<vector>
using namespace std;
int main()
{
int n; int j;
int sum = 0; int a=0, b = 0;
vector<int> x;
vector<int>y;
cin >> n;
for (int i = 0; i < n; i++)
{
int temp1; int temp2;
cin >>temp1 >>temp2;
x.push_back(temp1);
y.push_back(temp2);
}
for (j = 0; j < n; j++)
{
sum = sum + abs(x[j] - a);
sum = sum + abs(y[j] - b);
a = x[j];
b = y[j];
}
sum = sum + abs(a - 0);
sum = sum + abs(b - 0);
cout << sum<<endl;
system("pause");
return 0;
}