Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: Liệt kê xâu nhị phân | Liệt kê chuỗi nhị phân ???

  1. #1
    Ngày gia nhập
    11 2008
    Nơi ở
    Hà Nội
    Bài viết
    70

    Mặc định Liệt kê xâu nhị phân | Liệt kê chuỗi nhị phân ???

    Ai giải thích dùm em chỗ hàm sinhketiep voi:

    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<string.h>
    4. #include<stdlib.h>
    5. #include<math.h>
    6. void nhap(int *A,int &n)
    7. {
    8.     int i;
    9.     printf("\n Nhap n:");
    10.     scanf("%ld",&n);
    11.     for(i=1;i<=n;i++)
    12.         A[i]=0;
    13. }
    14. void inxau(int *A,int n)
    15. {
    16.     for(int i=1;i<=n;i++)
    17.         printf("%5d",A[i]);
    18.         printf("\n");
    19.  
    20. }
    21. void sinhketiep(int *A,int n, int &stop)
    22. {
    23.     int i=n;
    24.     while(A[i]==1)
    25.     {
    26.         A[i]=0;
    27.         i--;
    28.     }
    29.     if(i==0) stop= 1;
    30.     else A[i]=1;
    31. }
    32. void lietke(int *A,int n,int stop)
    33. {
    34.     while(stop==0)
    35.     {
    36.         inxau(A,n);
    37.         sinhketiep(A,n,stop);
    38.     }
    39. }
    40. void main()
    41. {
    42.      clrscr();
    43.      int A[100],n,stop=0;
    44.      nhap(A,n);
    45.      lietke(A,n,stop);
    46.      getch();
    47. }
    Dân thường sống đẹp đè bẹp dân chơi.
    Hi [you]

  2. #2
    Ngày gia nhập
    11 2008
    Nơi ở
    Hà Nội
    Bài viết
    70

    Bác nào giúp em đi, em chưa hiểu rõ lắm chỗ hàm sinhketiep?
    Dân thường sống đẹp đè bẹp dân chơi.
    Hi [you]

  3. #3
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    C Code:
    1. void sinhketiep(int *A,int n, int &stop)
    2. {
    3.     int i=n;
    4.     while(A[i]==1)
    5.     {
    6.         A[i]=0;
    7.         i--;
    8.     }
    9.     if(i==0) stop= 1;
    10.     else A[i]=1;
    11. }

    Chẳng biết giải thích như nào cho bạn hiểu, bạn đã đọc qua lý thuyết thuật toán sinh chưa?

    Hàm đó có tác dụng là sinh ra mảng số mới là kết tiếp

    Vd:
    mảng hiện tại 1001101 thì kế tiếp sau hàm đó là 1001110
    mảng hiện tại 001111 thì kế tiếp sau hàm đó là 010000
    hàm đó sẽ đọc ngược từ cuổi lên gặp giá trị 1 (max tại vị trí) nào thì chuyển nó về 0 (min tại vị trí) và tăng giá trị chưa max lên 1 đơn vị, tức giá trị 0 gần cuối nhất thành 1.

    stop để kiểm tra chuỗi đã full hết chưa, nếu chuỗi đã toàn 1 thì i<0 stop=1 kết thúc vòng lặp.

  4. #4
    Ngày gia nhập
    10 2008
    Nơi ở
    đại học vinh
    Bài viết
    283

    bài này có thể dùng đệ qui đc ko ?
    ai có code cho em xin với

  5. #5
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Bạn tham khảo code này, nhưng là C++ đó, cố gắng đọc hiểu thuật toán
    C Code:
    1. /* Phuong phan de quy quay lui:
    2.  *      sinh day con nhi phan co do dai N
    3.  * Date: 20090217
    4.  */
    5. #include <iostream>
    6. using namespace std;
    7.  
    8. void Display(int *a, int n)
    9. {
    10.     for (int i=0; i<n; ++i) cout << "  " << a[i];
    11.     cout << endl;
    12. }
    13.  
    14. void Binary(int *a, int n, int i)
    15. {
    16.     for (int j=0; j<2; ++j)
    17.     {
    18.         a[i]=j;
    19.         if(i==n-1) Display(a,n);
    20.         else Binary(a,n,i+1);
    21.     }
    22. }
    23.  
    24. int main()
    25. {
    26.     int *a,n;
    27.     cout << "Enter number n = ";cin >> n;
    28.     a=new int [n];
    29.     Binary(a,n,0);
    30.     delete[]a;
    31. }

  6. #6
    Ngày gia nhập
    03 2009
    Bài viết
    6

    Mặc định Liệt kê xâu nhị phân | Liệt kê chuỗi nhị phân ???

    Code:
    void sinhketiep(int *A,int n, int &stop)
    {
        int i=n;
        while(A[i]==1)
        {
            A[i]=0;
            i--;
        }
        if(i==0) stop= 1;
        else A[i]=1;
    }
    i=n,để đọc ngược lên. Trong quá trình đọc ngược lên nếu gặp a[i]=1 thì a[i] đó sẽ gán bằng 0, sau đó tiếp tục đọc ngược lên nếu tiếp tục gặp a[j]=1 luôn thì lại gán a[j]=0 còn ngược lại gặp a[j]=0 thì ra khỏi vòng while kiểm ra điều kiện của j, nếu j=0(có nghĩa là đã sinh ra hết chuỗi)thì gán stop=1(biến stop dùng để dừng hàm lietke), nếu j!=0 và lúc đó a[j] đang =0 thì gán a[j]=1.

  7. #7
    Ngày gia nhập
    02 2009
    Bài viết
    56

    mấy anh ơi mấy đọc mấy cái thuật toán đó ở đâu vậy,chỉ cho em cuốn sách nào hay hay mà tiếng việt ấy ,em ko biết tiếng anh cảm ơn nhiều

  8. #8
    Ngày gia nhập
    03 2009
    Bài viết
    6

    Mình thấy cuốn này đọc hay nè, cấu trúc dữ liệu và giải thuật của tác giả Lê Minh Hoàng.
    http://download479.mediafire.com/xm5...Minh+Hoang.pdf

Các đề tài tương tự

  1. Bài tập C++ Cách để so sánh 2 chuỗi kí tự giữa chuỗi nhập từ phím và chuỗi từ file xem có giống nhau không?
    Gửi bởi davilson18 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 09-06-2012, 09:47 AM
  2. Lập trình C Thay thế chuỗi s1 trong chuỗi s bằng chuỗi s
    Gửi bởi duytue trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 23-09-2011, 04:16 PM
  3. thay thế chuỗi con thứ i trong chuỗi mẹ bằng 1 chuỗi khác
    Gửi bởi nhat1811 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 06-08-2011, 08:25 AM
  4. Trả lời: 1
    Bài viết cuối: 29-06-2011, 12:02 AM
  5. xem một từ trong chuỗi là một chuỗi con, sắp xếp các chuỗi con theo thứ tự tăng dần
    Gửi bởi qpkdct1101 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 20-01-2011, 08:22 AM

Quyền hạn của bạn

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