
一开始将输入的数据存入数组中,一直爆掉
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int m, n;
while(true)
{
cin >> m>> n;
long **s = new long* [m];
for(int i=0; i<m; i++)
s[i] = new long[n];
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
cin >> s[i][j];
}
}
int maxr, maxc, maxn;
maxr = maxc = 0;
maxn = s[0][0];
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
if(abs(s[i][j]) > maxn)
{
maxr = i;
maxc = j;
maxn = abs(s[i][j]);
}
}
}
cout << maxr+1<<" " << maxc+1<< " " << s[maxr][maxc] << endl;
//释放空间
for(int i=0; i<m; i++)
{
delete[] s[i];
}
s = NULL;
}
return 0;
}
起始这就是一个求最值的问题,根本不需要使用数组,先遍历存储再遍历比较,直接边读取输入边处理即可。
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int m, n;
while(true)
{
cin >> m >> n;
int maxr, maxc, temp;
long maxn = 0;
bool flag = true;
maxr = maxc = maxn = 0;
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
cin >> temp;
if(abs(temp) > maxn)
{
maxr = i+1;
maxc = j+1;
maxn = abs(temp);
flag = maxn==temp?true:false;
}
}
}
cout << maxr<<" " << maxc<< " " << (flag?1:(-1))*maxn << endl;
}
return 0;
}
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int m, n;
while(cin >> m >> n)
{
int maxr, maxc, temp;
long maxn = 0;
bool flag = true;
maxr = maxc = maxn = 0;
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
cin >> temp;
if(abs(temp) > maxn)
{
maxr = i+1;
maxc = j+1;
maxn = abs(temp);
flag = maxn==temp?true:false;
}
}
}
cout << maxr<<" " << maxc<< " " << (flag?1:(-1))*maxn << endl;
}
return 0;
}
进一步可以不用设置标志值,直接将maxn看做是绝对值最大的量就行。
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int m, n;
while(cin >> m >> n)
{
int maxr, maxc, temp;
long maxn = 0;
maxr = maxc = maxn = 0;
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
cin >> temp;
if(abs(temp) > abs(maxn))
{
maxr = i+1;
maxc = j+1;
maxn = temp;
}
}
}
cout << maxr<<" " << maxc<< " " << maxn << endl;
}
return 0;
}
将maxn的数据类型改为int也行,因为实际上存储的是负数,进行一次abs运算的到的是中间结果,不会溢出。
博客探讨了在处理HDU2022海选女主角问题时遇到的Output Limit Exceeded错误。通过分析,提出无需存储全部数据,可以直接边读取输入边处理,避免数组导致的效率问题。同时,建议改变数据类型以防止负数溢出,确保计算正确。
916

被折叠的 条评论
为什么被折叠?



