[Mảng 1 Chiều Cơ Bản]. Bài 48. Dãy con liên tiếp tăng dài nhất

View as PDF

Submit solution

Points: 1.00 (partial)
Time limit: 1.0s
Memory limit: 256M
Input: stdin
Output: stdout

Author:
Problem source:
28Tech
Problem type
Allowed languages
C, C#, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch

Cho mảng A[] gồm N phần tử nhiệm vụ của bạn là hãy liệt kê những dãy con liên tiếp tăng chặt dài nhất.

Gợi ý : So sánh a[i] và a[i - 1], nếu a[i] > a[i - 1] thì cập nhật độ dài dãy con hiện tại, ngược lại thì bạn so sánh độ dài dãy con kết thúc tại a[i - 1] so với kỷ lục đang có và cập nhật kết quả. Nếu độ dài dãy con đang có tốt hơn kỷ lục thì ghi nhận 1 dãy con, trường hợp độ dài dãy con hiện tại chỉ bằng dãy con kỷ lục thì tăng thêm 1 dãy con nữa. Nên dùng 1 mảng để lưu chỉ số bắt đầu của các dãy con thỏa mãn.


Đầu vào

• Dòng 1 là T : số bộ test

• Mỗi bộ test gồm 2 dòng

• Dòng 1 là N : số phần tử trong mảng

• Dòng 2 là N số trong mảng


Giới hạn

• 1<=T<=100

• 1<=N<=1000

• 0<=A[i]<=1000


Đầu ra

• Đối với mỗi bộ test dòng 1 in ra độ dài dãy con tăng chặt dài nhất, các dòng tiếp theo liệt kê các dãy con thỏa mãn trên từng dòng. Ngoài ra bạn cần ghi thêm số thứ tự bộ test. Xem test mẫu để rõ hơn yêu cầu.


Ví dụ :

Input 01
5
10
39 48 41 18 12 35 10 29 29 45 
10
19 37 14 24 49 45 36 25 38 16 
10
40 28 1 29 11 1 36 32 33 26 
10
13 32 1 18 49 7 48 1 17 32 
10
45 27 27 19 15 10 6 1 0 0
Output 01
Test #1 :
2
39 48 
12 35 
10 29 
29 45 
Test #2 :
3
14 24 49 
Test #3 :
2
1 29 
1 36 
32 33 
Test #4 :
3
1 18 49 
1 17 32 
Test #5 :
1
45 
27 
27 
19 
15 
10 
6 
1 
0 
0

Comments

Please read the guidelines before commenting.



  • 0
    perkbevis2k4  commented on Nov. 24, 2024, 5:36 a.m.

    Ai muốn tham khảo code thì vô github: perk bevis nha


  • 0
    tuyen_pham  commented on Oct. 25, 2024, 2:12 p.m.

    include <bits/stdc++.h>

    using namespace std; int n,a[1000000]; vector<int>b; int main() { int t; cin>>t; int k=1; while(t--) { cin>>n; for(int i=0; i<n; i++) cin>>a[i]; int dem=1,m=0; for(int i=0; i<n; i++) { if(a[i]<a[i+1]) dem++; else { m=max(m,dem); dem=1; } } cout<<"Test #"<<k<<" :"<<endl;k++; cout<<m<


  • 0
    luan54bc  commented on Aug. 22, 2024, 1:37 p.m.

    include <bits/stdc++.h>

    using namespace std;

    bool nt(int n) { if (n <= 1) return false; for (int i = 2; i <= sqrt(n); i++) { if (n % i == 0) return false; } return true; }

    int main() { int n; cin >> n; int a[n]; for (int i = 0; i < n; i++) { cin >> a[i]; }

    int dem = 0, vt = 0, kiluc = 0;
    for (int i = 0; i < n; i++) {
        if (nt(a[i])) {
            dem++;
            if (dem > kiluc) {
                kiluc = dem;
                vt = i - dem + 1;
            }
        } else {
            dem = 0;
        }
    }
    
    if (kiluc == 0) {
        cout << "NOT FOUND" << endl;
    } else {
        cout << kiluc << endl;
        for (int i = vt; i < vt + kiluc; i++) {
            cout << a[i] << " ";
        }
        cout << endl;
    }
    
    return 0;
    

    } bai nay em dan sai bai nay cua 46 a


  • -5
    Hahaaaa  commented on July 11, 2024, 4:40 a.m.

    This comment is hidden due to too much negative feedback. Show it anyway.


  • -5
    NTH11112222  commented on June 11, 2024, 1:43 p.m.

    This comment is hidden due to too much negative feedback. Show it anyway.