30/09/2018, 16:11

Xuất ra mảng con giảm dần

Thấy trên FB có một bạn hỏi câu này
Viết thuật toán xuất ra các mảng con giảm dần

Ví Dụ:

Input:

3 2 1 5 4

Output :

3 2 1 
5 4
Nguyễn Minh Dũng viết 18:26 ngày 30/09/2018

Sáng sớm rảnh rỗi sinh nông nổi làm luôn.

#include <stdio.h>

int main()
{
    int mang[] = {3, 4, 2, 1, 5, 4};
    int max = mang[0];
    int print_max = 1;
    int i;
    for(i = 1; i < sizeof mang / sizeof(int); ++i) {
        if (max > mang[i]) {
            if (print_max) {
                printf("\n%d ", max);
                print_max = 0;
            }
            printf("%d ", mang[i]);
        }
        else {
            max = mang[i];
            print_max = 1;
        }
    }
        
    return 0;
}

Ai có cách nào khác không?

Gió viết 18:27 ngày 30/09/2018

Theo mình bài này chỉ cần lưu chỉ sổ của mảng bị chia ra:
Chỉ số phải thoã mãn điều kiện: a[i]>a[i+1]
lưu chỉ số này vào mảng index.
sau đó in ra các đoạn index[i]->index[i+1] là được

Lau Cr Pắp viết 18:24 ngày 30/09/2018

anh đạt ơi, tại sao sizeof lại là một toán tử chứ không phải là một hàm. Và anh có thể chỉ em cách phân biệt không?

Nguyễn Minh Dũng viết 18:25 ngày 30/09/2018

tại sao sizeof lại là một toán tử

Trong video này Đạt có đề cập đến việc sizeof là toán tử, nhưng chưa thấy ai thắc mắc gì hết trơn. Giờ đố xem có bạn nào giải thích được không.
viết 18:14 ngày 30/09/2018

Input:

3 2 1 5 4

Output :

3 2 1 
5 4

Nếu có 5 4 đc coi là dãy giảm thì sau khi tìm được 3 2 1 cũng phải in thêm 2 1 chứ a đạt X__X

Nguyễn Minh Dũng viết 18:28 ngày 30/09/2018

Không phải em, vì 321 là một dãy con giảm dần rồi, cho tới khi gặp số 5 thì có nghĩa là 321 đã bị ngắt quãng. Sau đó 5 phải tìm tiếp xem phía sau nó có dãy con nào không.

Lâm Quang Minh viết 18:12 ngày 30/09/2018

sizeof nó sẽ trả ra một constant, mục đích là để optimze chương trình cho chính compiler đó tạo ra
ví dụ sizeof (int) thì compiler nó hiểu là 4, ko cần phải runtime mới biết là 4

Bài liên quan
0