kết quả từ 1 tới 10 trên 10

Tìm lỗi cơ bản

  1. #1
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 353076
    Giới tính: Nam
    Bài gửi
    45

    Lightbulb Tìm lỗi cơ bản

    Mã:
    #include <iostream>
    using namespace std;
    void nhap (int a[], int &n, int &x);
    void timkiemnp(int a[], int n, int x);
    int main()
    {
        int a[50], n, x;
        nhap(a,n,x);
        timkiemnp(a,n,x);
    }
    void nhap (int a[], int &n, int &x)
    {
        cin>>n>>x;
        for(int i=0; i<n ; i++)
        {
            cin>>a[i];
        }
    }
    void timkiemnp(int a[], int n, int x)
    {
        int dem=0;
        int l=0, r=n-1;
        while(l<=r)
        {
            int m=(l+r)/2;
            if (a[m]==x)
            {
                cout<<m<<" ";
                dem=dem+1;
            }
            if(a[m]>x)
                r=m-1;
            else l=m+1;
        }
        if(dem==0) cout<<"-1";
    }
    AI XEM CODE Này SAI CHỗ NàO Mà K RA Kết QUả K
    Quick reply to this message Trả lời       


  2. #2
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 56897
    Giới tính: Nam
    Bài gửi
    881

    Reply: Tìm lỗi cơ bản

    Cho 1 sorted array, bạn đang muốn in ra vị trí những phần tử bằng với con số 'x' nào đó phải không? Đề là gì vậy?
    LCD: 13.3" 1920x1080 IPS
    CPU: Intel i7 - 4700MQ (2.4 GHz - 3.4 GHz)
    GPU: Nvidia GTX 765m with GDDR5 2GB
    RAM: 2x8GB G.Skill 2133
    HDD: Samsung SSD 850 Pro 512 GB
    2 kg.

  3. #3
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 353076
    Giới tính: Nam
    Bài gửi
    45

    Reply: Tìm lỗi cơ bản

    in tat ca cac vi tri bang gia tri X can tin trong array. xem giup thanh oi, chi dung tim kiem nhi phan

  4. #4
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 56897
    Giới tính: Nam
    Bài gửi
    881

    Reply: Tìm lỗi cơ bản

    Khi bạn tìm như thế, có thể giá trị biến mid ở ngay giữa đoạn cần tìm. Bởi vậy lúc xác định lại left, right thì chương trình sẽ bỏ qua một đoạn lớn.

  5. #5
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 353076
    Giới tính: Nam
    Bài gửi
    45

    Reply: Tìm lỗi cơ bản

    vay phai duyet xac dinh lelt, right nhu the nao ban

  6. #6
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 56897
    Giới tính: Nam
    Bài gửi
    881

    Reply: Tìm lỗi cơ bản

    Mình sẽ dùng binary search tìm vị trí đầu tiên (first occurrence) và vị trí cuối cùng (last occurrence) của 'x' trên dãy. Bạn suy nghĩ làm sao viết đc tìm vị trí bắt đầu của một số dùng binary search trước.
    Độ phức tạp của thuật toán: O(log n).

  7. #7
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 353076
    Giới tính: Nam
    Bài gửi
    45

    Reply: Tìm lỗi cơ bản

    Mã:
    int timkiem(int a[], int n, int x){
    	int l=0,r=n-1,m;
    	do
    	{
    		m=(l+r)/2;
    		if(x==a[m]) return m;
    		else		if(x<a[m])		r=m-1;
    		else		l=m+1;	}	
    while(l<=r);	
    return -1;
    }
    vay sua nhu the nao la dung ban :/

  8. #8
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 56897
    Giới tính: Nam
    Bài gửi
    881

    Reply: Tìm lỗi cơ bản

    Cái này bạn suy nghĩ trước đã nhé. Mình gợi ý là: để tìm vị trí đầu tiên thì 'mid' phải thỏa mãn tính chất là:
    Mã:
    (a[mid] == x) VÀ (mid == 0 hoặc a[mid - 1] < x)

  9. #9
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 353076
    Giới tính: Nam
    Bài gửi
    45

    Reply: Tìm lỗi cơ bản

    Mã:
    #include <iostream>
    #include <string.h>
    using namespace std;
    void hoanvi(char s[] , int i)
    {
     int j, n = strlen(s);
     char ch;
     for(j = i ; j < n; j++)
     {
      ch = s[i];
      s[i] = s[j];
      s[j] = ch;
      if (i == (n - 2)) cout << s<<" ";
      else hoanvi(s, i + 1);
     }
    }
    void main()
    {
     
     char s[] = "1234";
     
     hoanvi(s, 0);
     system("pause");
    }
    [COLOR=rgb(255,0,0)] nho ban ten gi day giai thich giup minh dong
    Mã:
      if (i == (n - 2)) cout << s<<" ";
    voi, tai sao no ra 24 ket qua. truong hop I==n-2 chi co 4 ket qua thoi ma. hix[/COLOR]

  10. #10
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 56897
    Giới tính: Nam
    Bài gửi
    881

    Reply: Tìm lỗi cơ bản

    Số lượng permutations tối đa của tập hợp gồm n phần tử là n!. Bạn có 4 phần tử thì sẽ có 4! = 24 permutations. Mình dùng online C++ chạy thử thì hình như vẫn chưa in ra đúng, nhất là với số 4 ở đầu.