为什么我这个代码提交上去了,提示Memory Limit Exceeded(MLE)
#include
using namespace std;
struct position
{
int x1, x2, x3, y1, y2, y3;
} pos;
int distance(int x1, int y1, int x2, int y2)
{
return sqrt(pow(abs((x2 - x1)), 2) + pow(abs((y2 - y1)), 2));
}
int main()
{
cin >> pos.x1 >> pos.y1 >> pos.x2 >> pos.y2 >> pos.x3 >> pos.y3;
double ans = 0;
ans = distance(pos.x1, pos.y1, pos.x2, pos.y2) + distance(pos.x2, pos.y2, pos.x3, pos.y3) + distance(pos.x3, pos.y3, pos.x1, pos.y1);
printf ("%.2lf", ans);
return 0;
}
题目来自于洛谷
题目网址:https://www.luogu.com.cn/problem/P5735
如果代码报MLE,说明程序在运行过程中申请的内存超过了限制,导致内存不足,程序停止运行。
在这种情况下,可以采取以下措施来解决问题:
减小数组的大小:例如,如果使用的数组大小过大,可以考虑减小数组的大小。
优化算法:例如,可以考虑使用不需要使用太多内存的算法,以减少内存的使用。
使用更高效的语言:例如,可以考虑使用更高效的语言,如C++,以获得更好的内存管理。
你把 pow(,2) 改为用乘法做,可能这里会出问题