C++ 如何求二维阵列中两点的差 #包括 使用名称空间std; int main(int argc,字符**argv) { INTC; 整数距离=0; int最大距离=0; 整数和=0; cin>>c; 整数点[c][2]; 对于(int i=0;i点[i][j]; } } cout
如果引入点类型,这将更加清晰:C++ 如何求二维阵列中两点的差 #包括 使用名称空间std; int main(int argc,字符**argv) { INTC; 整数距离=0; int最大距离=0; 整数和=0; cin>>c; 整数点[c][2]; 对于(int i=0;i点[i][j]; } } cout,c++,multidimensional-array,difference,C++,Multidimensional Array,Difference,如果引入点类型,这将更加清晰: #include <iostream> using namespace std; int main (int argc, char ** argv) { int c; int distance=0; int largestdistance=0; int sum=0; cin >> c; int point[c][2]; for (int i=0; i<c; i++){
#include <iostream>
using namespace std;
int main (int argc, char ** argv)
{
int c;
int distance=0;
int largestdistance=0;
int sum=0;
cin >> c;
int point[c][2];
for (int i=0; i<c; i++){
for (int j=0; j<2; j++){
cin >> point[i][j];
}
}
cout << point[2][0] << " ";
for (int i=0; i<c; i++){
for (int j=0; j<2; j++){
sum += abs(point[0][0]-point[1][0])+abs(point[0][1]-point[1][1]);
}
if (sum > largestdistance){
largestdistance=sum;
}
cout << '\n';
return 0;
}
}
有了它,循环就容易多了:
struct Point {
int x, y;
};
int manhattan_dist(const Point& p, const Point& q) {
return abs(p.x - q.x) + abs(p.y - q.y);
}
或者,优选地:
Point* points = new Point[c];
std::向量点(c);
那么我必须动态分配阵列才能使程序工作,还是可选@Barry@SeanChen您的编译器可能允许您这样做,但最好不要依赖非C++11特性(VLA仅适用于C)只是动态分配内存。嗯,但是我使用的是一个真正的旧版本的C++,而不是C++ 11,所以我可能无法做到这一点。我现在改变了你告诉我的所有内容,我更新了我的代码,让它里面有你的东西。但是,由于某种原因,我在CIN >点[i][j]上有一个错误,这个错误与'Trace[] ]不匹配。(&points)->std::vector::operator[][with _Tp=Point,_Alloc=std::allocator]((unsigned int)i))[j]'。您知道如何解决这个问题吗@Barry@SeanChen因为点
不再是2D数组,而是点
的1D数组。您必须分别输入x
和y
。
Point* points = new Point[c];
std::vector<Point> points(c);