Từ "cặp" theo yêu cầu của bài, theo tôi hiểu, là đặt ra một cặp số, lớn nhất (ln1) và lớn thứ hai (ln2). Và so sánh cặp số này với dãy số.
Code:
// giả sử đã có dãy số so[100] và n phần tử
// đặt ra một số rất nhỏ để làm thuật so sánh
#define SORATNHO -999999999
// khởi đầu số lớn nhất, nhì bằng trị rất nhỏ
// mục đích để khi so sánh, chúng sẽ chộp lấy trị đầu tiên
// nhiều giải thuật bỏ qua phần này và khởi đầu chúng bằng trị đầu tiên của mảng
// làm cách ấy trông gọn nhưng thực ra sẽ gặp khó khăn nếu mảng có nhiều số lớn nhất
ln1 = SORATNHO;
ln2 = ln1-1;
for (int i=0; i < n; i++)
{
if (so[i] > ln1) // số mới lớn hơn cả hai số hiện tại
{
ln2 = ln1;
ln1 = so[i];
}
else if (so[i] > ln2) // số mới chỉ lớn hơn số thứ hai
ln2 = so[i];
}
if (ln1 <= SORATNHO)
// mảng không có số lớn nhất (mảng trống)
else if (ln2 <= SORATNHO)
// mảng không có số lớn nhì (mảng chỉ có 1 trị)
Bookmarks