Bài toán. Liệt kê các dãy con liên tiếp không giảm (có nhiều hơn 1 phần tử) của dãy ban đầu, mỗi dãy trên 1 dòng. Ví dụ:
SEARCH.INP |
SEARCH.OUT |
6 3 4 6 2 7 3 |
3 4 6 2 7 |
Code tham khảo:
#include <iostream>
using namespace std;
int main () {
freopen("KGIAM.INP","r",stdin);
freopen("KGIAM.OUT","w",stdout);
int n, a[1000];
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
int i = 0; // Biến chạy i
int d = 0; // Biến xác định vị trí của a[i]
while (i < n-1) {
// Nếu thỏa mãn điều kiện ko giảm
if (a[i] < a[i+1]) {
// Nếu a[i] là giá trị đầu tiên của dãy số
if (d==0) {
cout << a[i] << " " << a[i+1] << " ";
d++;
}
// Trường hợp d != 0: a[i+1] là giá trị tiếp theo
else
cout << a[i+1] << " ";
}
// Ko thỏa mãn: xuống dòng viết dãy số tiếp theo
else {
cout << endl;
d = 0;
}
i++; // Tăng biến i qua mỗi vòng lặp
}
return 0;
}