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

Đề tài: Bài toán chuỗi nhị phân, đối xứng (quay lui)

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

    Mặc định Bài toán chuỗi nhị phân, đối xứng (quay lui)

    1. Một xâu nhị phân được gọi là xâu thuận nghịch độc là xâu đọc từ trái sang phải hay từ phải sang trái ta vẫn nhận được chính xâu đó (ví dụ xâu: 1010.0101). Hãy duyệt tất cả các xâu nhị phân thuận nghịch độc độ dài n.
    2. Viết chương trình liệt kê tất cả các xâu nhị phân độ dài n.

  2. #2
    Ngày gia nhập
    05 2008
    Bài viết
    224

    đầu tiên , bạn biết đệ quy quay lui chưa đã, bài này dùng quay lui , nếu bạn ko biết thì phải học nó , nếu biết rồi thì đơn giản , bạn làm 1 hàm in ra các mảng , 1 hàm tìm để xét duyệt các trường hợp , nhớ có biến xác định chiều dài , và mảng chứa phần tử chỉ gồm 0,1 . thêm 1 hàm xác định nó là xâu thuận nghịch
    Đã được chỉnh sửa lần cuối bởi cafelanh : 08-04-2009 lúc 12:01 PM.
    Em có thấy nắng vàng kỷ niệm
    Hạ ngồi ru thanh thản những môi cười
    Thuở ngồi ngóng tay choàng tay nỗi nhớ
    Vin tay vào tháng năm chơi vơi...

  3. #3
    Ngày gia nhập
    05 2008
    Bài viết
    224

    bạn tham khảo bài này liệt kê toàn bộ xâu nhị phân độ dài n , bạn chỉ cần thêm hàm xét xem nó có đối xứng nữa không, có gì ko hiểu thì hỏi nhé
    C++ Code:
    1. #include <iostream.h>
    2. #include<conio.h>
    3. //using namespace std;
    4. int x[20];
    5. int n;
    6. int sd =0;
    7. void xuatkq(int x[])
    8.      {
    9.      int i;
    10.      for(i=0; i<n; i++)
    11.      cout<< " "<< x[i];
    12.      cout<<endl;
    13.      }
    14. void thu(int k)
    15. {
    16.      int i;
    17.      if (k==n)
    18.      { sd++;
    19.      xuatkq(x);
    20.      }
    21.      else
    22.       for (i=0; i<=1; i++)
    23.       {
    24.         x[k] = i;
    25.         thu(k+1);
    26.       }
    27.  }
    28.  
    29.  int main()
    30.  {
    31.      int i;
    32.      cout<<"Nhap vao mot so n= "; cin>>n;
    33.      thu(0);
    34.      cout<<"\n So day la: "<<sd;
    35.      getch();
    36.      return 0;
    37.  }
    Em có thấy nắng vàng kỷ niệm
    Hạ ngồi ru thanh thản những môi cười
    Thuở ngồi ngóng tay choàng tay nỗi nhớ
    Vin tay vào tháng năm chơi vơi...

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

    @lehuuhuy: cứ cái kiểu post bài tiêu đề không rõ ràng + spam, thụ động không chịu tự tìm hiểu như này thì lần sau bạn vào box "Các đề tài và bài viết vi phạm." mà tìm bài của mình nhé.

    - Làm thêm một hàm kiểm tra chuỗi thuận nghịch nữa. Thêm hàm này vào điều kiện in của hàm quay lui trên.

    *Kiểu như này:

    int Check...

    C Code:
    1. void thu(int k)
    2. {
    3.      int i;
    4.      if (k==n)
    5.      {
    6.      if (Check())       //////////
    7.      {
    8.           sd++;
    9.           xuatkq(x);
    10.      }
    11.      }
    12.      else
    13.       for (i=0; i<=1; i++)
    14.       {
    15.         x[k] = i;
    16.         thu(k+1);
    17.       }
    18.  }

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

    Thêm cái hàm check nè
    C Code:
    1. long check(int *a,int m){
    2. int i=0,j=m-1;
    3. while(a[i++] == a[j--]);
    4. if (--i>=++j)
    5.  return 1;
    6.     return 0;
    7. }
    Dân thường sống đẹp đè bẹp dân chơi.
    Hi [you]

  6. #6
    Ngày gia nhập
    09 2008
    Bài viết
    5

    Mặc định Bài toán chuỗi nhị phân, đối xứng (quay lui)

    Mình nghĩ không cần hàm check đâu. Ban đầu mình sinh ra một sâu có độ dài n/2 rồi lật ngược nó lại rồi gán vào thành sâu lớn là được mà.

  7. #7
    Ngày gia nhập
    04 2010
    Bài viết
    5

    bạn có thể nói cho mình thuật toán để giải bài duyệt các xâu nhị phân độ dài n ko ?


    Code:
    #include <iostream.h>
    #include<conio.h>
    //using namespace std;
    int x[20];
    int n;
    int sd =0;
    void xuatkq(int x[])
         {
         int i;
         for(i=0; i<n; i++)
         cout<< " "<< x[i];
         cout<<endl;
         }
    void thu(int k)
    {
         int i;
         if (k==n)
         { sd++;
         xuatkq(x);
         }
         else
          for (i=0; i<=1; i++)
          {
            x[k] = i;
            thu(k+1);
          }
     }
     
     int main()
     {
         int i;
         cout<<"Nhap vao mot so n= "; cin>>n;
         thu(0);
         cout<<"\n So day la: "<<sd;
         getch();
         return 0;
     }
    Thức đêm mới bit đêm dài
    Ngủ ngày mới thấu ngày dài hơn đêm

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

  1. Lò quay vịt, lu quay vịt Bắc kinh dùng than giá rẻ tại đây - 0975512038 - www.thanglongco.vn
    Gửi bởi thanglongco.vn trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 23-09-2013, 12:53 PM
  2. Máy Quay HD Sony, máy quay sony Handycam, máy quay kỹ thuật số, máy quay phim mới tinh Mo
    Gửi bởi dientuthaithang trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 472
    Bài viết cuối: 03-08-2012, 05:16 PM
  3. Đồ chơi công nghệ thế kỷ 21:Bút quay,đồng hồ quay,móc quay,máy nghe lén qua sim
    Gửi bởi bigphonevn trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 06-08-2011, 10:47 PM
  4. Thiết bị thám tử: Bút quay,đồng hồ quay,móc quay,máy nghe lén qua sim
    Gửi bởi bigphonevn trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 17-07-2011, 08:23 AM
  5. Quay mũi tên quanh một điểm với góc quay 45 độ?
    Gửi bởi salinh trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 4
    Bài viết cuối: 28-11-2008, 01:39 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