01/10/2018, 14:39
Tìm chênh lệch nhỏ nhất giữa hai phần tử
Mọi người cho em hỏi bài này của em bị lỗi gì ạ, em không hiểu sai chỗ nào ý. Đề là nhập vào một mảng số nguyên, in ra khoảng cách nhỏ nhất giữa các phần tử, ( ví dụ 3 -7 0 thì in ra 3 ạ ). Với bộ kiểm thử 100000 số thì chương trình báo lỗi ạ***Error***
Task failed with signal 11
** Further testing aborted **
#include<iostream>
#include<cmath>
using namespace std;
int main() {
long x, n, a[10000], b[10000], i, j, k = 0, min;
cin >> n;
for(i=0;i<n;i++)
cin >> a[i];
x = n * (n - 1) / 2;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
b[k] = a[i] - a[j];
k++;
}
for(i=0;i<x;i++)
b[i] = abs(b[i]);
min = b[0];
for(i=1;i<x;i++)
{
if(b[i] < min)
min = b[i];
}
cout << min;
}
Bài liên quan
100k số thì
k
phải bằng bao nhiêuVà bạn sẽ nhận ra là cách này không hay Bạn cần phải xếp lại thì mới thấy min.
long a[1024];
là stack đã không đủ cấp phát cho chương trình rồi.vector
, đừng dùng mảng trừ khi đề bắt buộc.mình cũng bị lỗi
Error
Task failed with signal 11
** Further testing aborted **
hay
đều bị lỗi @@;
không biết sao để tránh khỏi lỗi này nhỉ @@
Khai báo mảng ít quá, khi n to (100k) thì truy cập vào a[n-1] làm sao đây? Mảng khai báo có 100 phần tử làm sao đủ?