问题描述:
在二维直角平面坐标系内,存在n堆花生,一只猴子位于原点,猴子要按顺序拿到所有的花生,并回到原点。猴子每次只能沿x或y方向移动一个单位。
输入:一个整数n(0<n<100),接下来的n行,每行两个整数,代表每堆花生的坐标。
输出:猴子走过的路程。
(printf("%d\n",d)输出)
输入样例:4
1 1
1 -1
-1 -1
-1 1
输入:一个整数n(0<n<100),接下来的n行,每行两个整数,代表每堆花生的坐标。
输出:猴子走过的路程。
(printf("%d\n",d)输出)
输入样例:4
1 1
1 -1
-1 -1
-1 1
输出样例:10
解决方案:题目不难,输入坐标,将坐标存在数组中,之后进行绝对值求和即可。
数组可以用自增长数组 vector,也可以自己定义一个固定数组。注释用的是vector的。
代码:
//猴子挖花生
#include <stdio.h>
//#include <vector>
#include <algorithm>
using namespace std;
int main()
{
//vector<int> x;
//vector<int> y;
int x[100],y[100];
int n,i,j;
int sum=0,a=0,b=0;
scanf("%d",&n);
for(i=0;i<n;i++){
int t1,t2;
scanf("%d%d",&t1,&t2);
//x.push_back(t1);
// y.push_back(t2);
x[i]=t1;
y[i]=t2;
}
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);
printf("%d\n",sum);
return 0;
}
如有不足,欢迎指正