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

Đề tài: Hỏi về chuỗi con lớn nhất trong chuỗi lớn

  1. #1
    Ngày gia nhập
    10 2008
    Bài viết
    0

    Angry Hỏi về chuỗi con lớn nhất trong chuỗi lớn

    Nhập 1 sâu ký tự in ra từ dài nhất trong sâu (từ là dãy ký tự không chứa ký tự trắng (dấu cách) )


    bạn nào giải hộ bài xin gi lại hộ phương pháp cái !!

    *Chú ý: Xem lại cái tiêu đề cho chính xác
    Đã được chỉnh sửa lần cuối bởi QuangHoang : 06-11-2008 lúc 09:38 AM.

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

    Bạn hình dùng như này nhé, chuỗi kí tự của bạn gồm nhiều từ nhưng có đặc điểm chung là mỗi từ đều bắt đầu = kí tự khác trắng và kí tự tiếp theo của kí tự kết thúc là trằng hoặc '\0' (từ cuối). Như vậy ta hình thành được một vòng lặp. Nói khó quá, thôi mình mô phỏng lại, ban code rồi post kết quả lên đây:

    Code:
    int lenmax=0,num=0;//độ dài của từ lớn nhất ta đang tìm, và vị trí bắt đầu của nó trong chuỗi.
    while (i còn nhỏ hơn độ dài chuỗi thì còn lặp)
    {
          if (tại vị trí i chuỗi khác trắng)
          { 
                int j=i;
                while(j lặp lại cho đến khi chuối tại i còn khác trắng ) j++;
                if (lenmax < (j-i+1) ) {lenmax=i-j+1; num=i;}
                i=j;
          }
          i++;
    }
    Code mang tính mô phỏng, khi làm nếu gặp vấn đề thì bạn tiếp tục thắc mắc.

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

    Mình thấy dùng getline để lấy chuỗi rồi cắt ra sẽ đỡ rắc rồi hơn.

  4. #4
    Ngày gia nhập
    11 2008
    Nơi ở
    Neverland
    Bài viết
    48

    OK cám ơn QuangHoang đưa ra thuật toán , mình dựa vào đó viết Code bạn nào cần có thể xem qua .
    Code:
    #include "stdio.h"
    #include "conio.h"
    #include "string.h"
    #define MAX 100
    void main()
    {
    	char s[MAX],temp[MAX];
    	int len_max,i,j,k;
    	printf("\nBan cho vao mot xau:");
    	gets(s);
    	i=0;
            len_max=0;
    	while (i<strlen(s))
    	{
    		while (s[i]==' ') i++;
    		j=i;
    		while (s[i]!=' ') i++;
    		if (len_max<i-j)
    		{
    			len_max=i-j;
    			for (k=0;k<len_max;k++)
    				temp[k]=s[j++];
                            temp[k]='\0';
    		}
    	}
    	printf("\nXau lon nhat la %s co do dai %d",temp,len_max);
        getch();
    }
    Code chỉ mang tính tham khảo các bạn có thể sẽ viết còn hay hơn mình

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

    hix mọi người hiểu nhầm ý mình rùi !!
    tôi không cẫn tìm số lượng của chuỗi lớn nhất mà mình muốn nó in ra từ lớn nhất thế mới khó chứ

    hix
    ví dụ nhé : adfdfs sdfsdsdfsdfdsfgdfg dfdfasds dedddd trtttr
    thì màn hình in ra cai này nè :sdfsdsdfsdfdsfgdfg
    vì nó lớn nhất mà

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

    Mặc định Hỏi về chuỗi con lớn nhất trong chuỗi lớn

    hix mọi người hiểu nhầm ý mình rùi !!
    tôi không cẫn tìm số lượng của chuỗi lớn nhất mà mình muốn nó in ra từ lớn nhất thế mới khó chứ

    hix
    ví dụ nhé : adfdfs sdfsdsdfsdfdsfgdfg dfdfasds dedddd trtttr
    thì màn hình in ra cai này nè :sdfsdsdfsdfdsfgdfg
    vì nó lớn nhất mà
    Bạn này đọc không hiểu vấn đè, thế đã chạy thử bài của trung_dk chưa.

    Tuy nhiên bạn chung dk không hiểu hết ý của QH, bạn trung dùng một mảng temp để lưu từ dài nhất là không cần tiết và tính toán nhiều thêm.

    Như hướng dẫn của QH ở trên chỉ cần lưu vị trí và giá trị dài nhất, vậy là có thể xuất chuỗi dài nhất rồi.

    cuongtrunghc cố gắng đọc hiểu và hình dung một chút.

  7. #7
    Ngày gia nhập
    11 2008
    Nơi ở
    Neverland
    Bài viết
    48

    Ừm mình dùng mảng temp là hơi thừa (mình muốn tách xâu lớn nhất ra riêng một mảng khác để các bạn khác đọc dễ hình dung đó mà hì hì) . Bạn cuongtrunghc bạn nên đọc kỹ thuật toán của bạn QuangHoang chứ , thuật toán quá rõ ràng mà bạn ấy tìm xâu con có độ dài lớn nhất lưu độ dài lớn nhất và vị trí xâu con lớn nhất trong xâu đã cho. Cuối cùng dựa vào độ dài lớn nhất và vị trí -> in ra xâu lớn nhất .
    Đã được chỉnh sửa lần cuối bởi trung_dk070384 : 10-11-2008 lúc 06:08 AM.

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

    Thank!! 2 người mình hiểu rồi !!

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

  1. Bị lỗi dính chuỗi khi nhập xuất chuỗi từ file trong C++?
    Gửi bởi nguyenchikhang trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 3
    Bài viết cuối: 03-11-2011, 03:13 PM
  2. Trả lời: 1
    Bài viết cuối: 29-06-2011, 12:02 AM
  3. Turbo C Lỗi Nhập một chuỗi và 1 từ cho biết từ đó xuất hiện trong chuỗi bao nhiêu lần?
    Gửi bởi vietvinhqn1992 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 17-01-2011, 12:38 PM
  4. Kỹ thuật C++ Các quy tắc nhập chuỗi trong C++, làm thế nào để nhập chuỗi có khoảng trắng?
    Gửi bởi quyen1991 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 20-11-2010, 03:36 PM
  5. Bài tập C tối ưu hóa chuỗi nhập từ bàn phím(xóa ký tự trắng thừa trong chuỗi)
    Gửi bởi kitti trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 13
    Bài viết cuối: 27-10-2010, 07:11 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