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

Đề tài: Tìm chuỗi con gồm các số giống nhau liên tiếp dài nhất của một chuỗi cho trước

  1. #1
    Ngày gia nhập
    10 2011
    Nơi ở
    /
    Bài viết
    26

    Mặc định Tìm chuỗi con gồm các số giống nhau liên tiếp dài nhất của một chuỗi cho trước

    Cho mình hỏi thuật toán để tìm chuỗi con dài nhất của một chuỗi cho trước thì làm thế nào?
    Ví dụ: ta có chuỗi 13433445633355
    thì in ra chuỗi 333.

  2. #2
    Ngày gia nhập
    11 2010
    Nơi ở
    hell
    Bài viết
    165

    xử lý như mảng.rùi đếm giống như bài tìm dãy có t/c j j đó dài nhất trong mảng cho trước
    HT117-5277

  3. #3
    Ngày gia nhập
    10 2011
    Nơi ở
    /
    Bài viết
    26

    Trích dẫn Nguyên bản được gửi bởi treatmaster Xem bài viết
    xử lý như mảng.rùi đếm giống như bài tìm dãy có t/c j j đó dài nhất trong mảng cho trước
    ừm, dùng mảng,bạn nói rõ hơn về cái bài đấy được không .

  4. #4
    Ngày gia nhập
    10 2011
    Bài viết
    552

    C++ Code:
    1. int *ChuoiLienTiepDaiNhat(int a[],int n, int &do_dai){
    2.     vi_tri=0; // Biến này để đánh dấu vị trí đầu tiên của chuỗi kết quả
    3.     do_dai=0; // Biến này để lưu độ dài của chuỗi kết quả
    4.     j=0; // j là biến để trỏ đến các vị trí đầu tiên của các chuỗi con cần xét
    5.     for(i:0->n-1){
    6.          if(a[i] != a[j]{ // Nếu != tức là chuỗi con đang xét đã dừng tại i-1
    7.              if (i - j  >= do_dai){ // Vào check xem độ dài của chuỗi đang xét như nào nào
    8.                   do_dai=i-j; // Gán lại độ dài của kết quả
    9.                   vi_tri=j; // Gán lại vị trí của chuỗi kết quả = j
    10.              } // Nếu độ dài ko lớn hơn do_dai thì kệ nó
    11.              j=i; // Dời j về i để tìm chuỗi khác xem sao
    12.          } // Nếu == nhau thì mặc kệ chúng, cứ chạy tiếp mà xét
    13.     }
    14.     return Địa chỉ của phần tử thứ vi_tri; //Địa chỉ mảng con kết quả là địa chỉ của a[vi_tri]
    15. }
    Đã được chỉnh sửa lần cuối bởi clchicken : 06-01-2012 lúc 11:30 PM.
    Um Mani Padme Hum...!!

  5. #5
    Ngày gia nhập
    04 2010
    Nơi ở
    Hà Nội
    Bài viết
    138

    Trích dẫn Nguyên bản được gửi bởi dailammoc;
    Cho mình hỏi thuật toán để tìm chuỗi con dài nhất của một chuỗi cho trước thì làm thế nào?
    Ví dụ: ta có chuỗi 13433445633355
    thì in ra chuỗi 333.
    Bằng nhau thì kết quả trả về 0 à
    Đã được chỉnh sửa lần cuối bởi vitnhua7590 : 07-01-2012 lúc 08:57 AM.
    Thế giới thật rộng lớn

  6. #6
    Ngày gia nhập
    10 2011
    Nơi ở
    /
    Bài viết
    26

    Mặc định Tìm chuỗi con gồm các số giống nhau liên tiếp dài nhất của một chuỗi cho trước

    Trích dẫn Nguyên bản được gửi bởi vitnhua7590 Xem bài viết
    Bằng nhau thì kết quả trả về 0 à
    Thực ra thì đề này yêu cầu trả về 0 nếu có hai chuỗi bằng nhau. Bạn thử nghĩ theo hướng in ra cả hai nếu cả hai chuỗi con lớn nhất có số phần tử bằng nhau xem .

  7. #7
    Ngày gia nhập
    10 2011
    Nơi ở
    /
    Bài viết
    26

    Trích dẫn Nguyên bản được gửi bởi clchicken Xem bài viết
    C++ Code:
    1. int *ChuoiLienTiepDaiNhat(int a[],int n, int &do_dai){
    2.     vi_tri=0; // Biến này để đánh dấu vị trí đầu tiên của chuỗi kết quả
    3.     do_dai=0; // Biến này để lưu độ dài của chuỗi kết quả
    4.     j=0; // j là biến để trỏ đến các vị trí đầu tiên của các chuỗi con cần xét
    5.     for(i:0->n-1){
    6.          if(a[i] != a[j]{ // Nếu != tức là chuỗi con đang xét đã dừng tại i-1
    7.              if (i - j  >= do_dai){ // Vào check xem độ dài của chuỗi đang xét như nào nào
    8.                   do_dai=i-j; // Gán lại độ dài của kết quả
    9.                   vi_tri=j; // Gán lại vị trí của chuỗi kết quả = j
    10.              } // Nếu độ dài ko lớn hơn do_dai thì kệ nó
    11.              j=i; // Dời j về i để tìm chuỗi khác xem sao
    12.          } // Nếu == nhau thì mặc kệ chúng, cứ chạy tiếp mà xét
    13.     }
    14.     return Địa chỉ của phần tử thứ vi_tri; //Địa chỉ mảng con kết quả là địa chỉ của a[vi_tri]
    15. }
    Mình dùng C nên khi khai báo "int &do_dai"(trong hàm ChuoiLienTiepDaiNhat) nó báo lỗi, có cách nào sửa không nhỉ.
    Return có phải là "return &a[vi_tri]" không?

  8. #8
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Dùng C thì cái đó bị lỗi là phải rồi. Kiểu đó gọi là kiểu THAM CHIẾU, cái này C++ mới có
    Nếu thế thì bạn sửa lại là
    int *do_dai ... và mọi thứ trong cái hàm đó có dính tới do_dai thì hãy sửa lại (*do_dai) <---- Dùng con trỏ
    Lúc nạp tham số vào hàm , thì truyền địa chỉ cho biến tại vị trí tham số đó ( ChuoiLienTiep...(....,&dodai) chẳng hạn)<--- cái này chắc bạn hiểu chứ nhỉ
    ____
    Return &a[vi_tri] chính xác
    Um Mani Padme Hum...!!

  9. #9
    Ngày gia nhập
    10 2011
    Nơi ở
    /
    Bài viết
    26

    Nó vẫn báo lỗi bạn ơi, lỗi phân đoạn :(
    Code:
    #include<stdio.h>
    #include<string.h>
    int *longeststring(int a[], int n, int *length)
    {
    	int location=0,j=0,i;
    	length=0;
    	for(i=0;i<=n-1;i++)
    	 
    		{
    		if(a[i] != a[j])
    		     {
    			if(i-j>=*length)
    			{
    				*length=i-j;
    				location=j;
    			}
    			j=i;
    		     }
    	         }
    		return &a[location];
    }
    int main(int argc, char* argv[])
    {
    	int b[50],a[50],i,location,n,length;
    	printf("enter the length of string:\n");
    	scanf("%d",&n);
    	printf("enter your string:\n");
    	for(i=0;i<=n;i++)
    		scanf("%d",&b[i]);
    	*longeststring(a, n, &length);
    	for(location=0;location<=length;location++)
    	printf("the longest substring is:%d",a[location]);
    }

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

  1. Lập trình C++ Lệnh cin.getline() không thể nhập chuỗi kế tiếp khi trước đó đã nhập 1 chuỗi vượt quá số kí tự tối đa khi khai báo
    Gửi bởi alonesnail025 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: 23-06-2013, 11:34 AM
  2. Tìm chuỗi pattern không liên tiếp có trong chuỗi str cho trước ?
    Gửi bởi kimchinh_no1 trong diễn đàn Nhập môn lập trình Java
    Trả lời: 2
    Bài viết cuối: 23-07-2012, 01:58 PM
  3. 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
  4. Trả lời: 0
    Bài viết cuối: 13-05-2012, 10:51 AM
  5. Algorithm Xác định mức độ giống nhau khi so sánh hai chuỗi tiếng Anh
    Gửi bởi nhuan07 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 24-10-2011, 12:51 PM

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