User Tag List

+ Trả lời chủ đề
Hiện kết quả từ 1 tới 7 của 7

Chủ đề: Thuật toán tìm kiếm tuần tự sử dụng lính canh

  1. #1
    .:: Grumpy svBKer ::. Avatar của 1973
    Tham gia ngày
    Mar 2010
    Bài gửi
    3.793

    Mặc định Thuật toán tìm kiếm tuần tự sử dụng lính canh

    Bác nào biết cái này rồi thì vào xem em có gì sai sót sửa giúp em nhé

    Đề bài: cho mảng số thực a có n số, nhập x từ bàn phím, tìm vị trí xuất hiện đầu tiên của x trong mảng a.

    Lời giải:

    Thường thì các bạn sẽ sử dụng vòng lặp for để duyệt hết mảng, vòng lặp for như sau:

    PHP Code:
    for (i=0i<ni++)
            {
                    if (
    a[i] == x)
                            break;
            } 
    Với mỗi vòng lặp, máy tính phải thực hiện 1 câu lệnh i++, 2 câu lệnh kiểm tra i<n và a[i]==x.

    Bây giờ ta thêm x vào cuối mảng rồi cài đặt lại vòng lặp như sau:

    PHP Code:
    a[n] = x// gan "linh canh" vao cuoi mang
            
    for (i=0; ; i++)
            {
                    if (
    a[i] == x)
                            break;
            } 
    Như vậy, mỗi vòng lặp for đã giảm được 1 câu lệnh kiểm tra, chương trình sẽ chạy nhanh hơn.

    Toàn bộ chương trình:

    PHP Code:
    /* Tim kiem dung linh canh */
    #include <stdio.h>
    #define MAX 50

    int main()
    {
            
    int a[MAX];
            
    int in;
            
    int x;
            
    printf("\nNhap n: ");
            
    scanf("%d",&n);
            
    printf("\nNhap du lieu cho mang: \n");
            for (
    0ni++)
            {
                    
    printf("\na[%d] = "i+1);
                    
    scanf("%d", &a[i]);
            }
            
            
    // tim kiem vi tri dau tien cua x trong mang
            
    a[n] = x// gan "linh canh" vao cuoi mang
            
    for (i=0; ; i++)
            {
                    if (
    a[i] == x)
                            break;
            }
            
            if (
    == n)
                    
    printf("\nKhong tim thay x trong mang\n");
            else
                    
    printf("\nVi tri cua x la a[%d]\n"i+1);   
            return 
    0;       

    Contact me:
    Email: sangnd [at] svBK.vn
    Personal website: My Blog | Chat với người lạ
    Facebook Page của Bách Khoa Forum: http://www.facebook.com/svbk.vn

  2. Tớ cảm ơn 1973 đã chia sẻ.


  3. #2
    svBK's Member
    Tham gia ngày
    Feb 2012
    Bài gửi
    26

    Mặc định Re: Thuật toán tìm kiếm tuần tự sử dụng lính canh

    bài này có vấn đề gì không nghỉ

  4. #3
    .:: Grumpy svBKer ::. Avatar của 1973
    Tham gia ngày
    Mar 2010
    Bài gửi
    3.793

    Mặc định Re: Thuật toán tìm kiếm tuần tự sử dụng lính canh

    Bạn hỏi thế thì mình thật sự cũng không biết trả lời thế nào .
    There is no solution for unknown problem

  5. #4
    svBK's Member
    Tham gia ngày
    Feb 2012
    Bài gửi
    26

    Mặc định Re: Thuật toán tìm kiếm tuần tự sử dụng lính canh

    nhưng khai báo biến max làm gì vậy, có thấy dùng nó đâu

  6. #5
    .:: Grumpy svBKer ::. Avatar của 1973
    Tham gia ngày
    Mar 2010
    Bài gửi
    3.793

    Mặc định Re: Thuật toán tìm kiếm tuần tự sử dụng lính canh

    À đúng rồi, cảm ơn bạn, mình copy phần khai báo từ chương trình khác rồi sửa lại nên có chỗ quên chưa sửa . Mình sửa lại rồi đấy nhé .

  7. #6
    svBK's Member
    Tham gia ngày
    Feb 2012
    Bài gửi
    26

    Mặc định Re: Thuật toán tìm kiếm tuần tự sử dụng lính canh

    nói chung đoạn code demo tương đối ổn, chỉ có điều bạn quên đặt hàm dừng màng hình để xem kết quả. Và nếu có thể nên khai báo cấp phát động cho mảng a thì sẽ tôi ưu hơn

  8. #7
    .:: Grumpy svBKer ::. Avatar của 1973
    Tham gia ngày
    Mar 2010
    Bài gửi
    3.793

    Mặc định Re: Thuật toán tìm kiếm tuần tự sử dụng lính canh

    Nnếu để tối ưu và hoàn chỉnh thì không chỉ cấp phát động mà còn phải kiểm tra dữ liệu đầu vào, và một số thao tác khác. Căn bản tớ lập chủ đề này ra nhằm mục đích giới thiệu thuật toán này cho những bạn chưa biết, do vậy, chương trình như hiện tại là ổn rồi.

    Còn về dừng màn hình thì tớ quen biên dịch bằng dòng lệnh nên không cần dừng màn hình , anh em nào muốn dừng màn hình thì thêm getchar(); vào cuối nhé .

+ Trả lời chủ đề

Thông tin chủ đề

Users Browsing this Thread

Hiện có 1 người đọc bài này. (0 thành viên và 1 khách)

Chủ đề tương tự

  1. Ân xá mở khóa các nhân vật vi phạm nhân dịp xuân Canh Dần
    Gửi bởi mr_hellogoodbye trong mục Game Online
    Trả lời: 0
    Bài cuối: 26-01-2010, 09:19 PM
  2. Sx muối bột canh như thế nào?
    Gửi bởi nguyenthubk2006 trong mục Viện CN Sinh học và Thực phẩm
    Trả lời: 1
    Bài cuối: 05-03-2009, 11:39 PM
  3. Vài món canh Việt Nam
    Gửi bởi jang_dong_lanh trong mục Văn hóa
    Trả lời: 94
    Bài cuối: 29-05-2006, 12:59 PM

Từ khóa (Tag) của chủ đề này

Quyền viết bài

  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình


About svBK.VN

    Bách Khoa Forum - Diễn đàn thảo luận chung của sinh viên ĐH Bách Khoa Hà Nội. Nơi giao lưu giữa sinh viên - cựu sinh viên - giảng viên của trường.

Follow us on

Twitter Facebook youtube