Đánh giá giúp mình bài này

Thảo luận trong 'Lập trình & Đồ hoạ' bắt đầu bởi Magic_fantasy, 5/12/08.

  1. Magic_fantasy

    Magic_fantasy Mr & Ms Pac-Man

    Tham gia ngày:
    22/6/06
    Bài viết:
    213
    Cho n xâu kí tự mỗi xâu gồm nhiều đoạn kí tự(từ a->z) cách nhau ít nhất 1 dấu cách(mã ASCII là 13)
    Đoạn lặp là đoạn có số kí tự được lặp lại nhiều lần.
    Input:
    -Dòng đầu nhập n là số xâu kí tự.
    -n dòng sau mỗi dòng nhập 1 xâu kí tự.
    Output:
    -Hãy tìm đoạn lặp liên tục dài nhất của từng xâu.
    VD:
    Input
    2
    aa sa la cnv a aa bb cc de(đoạn dài nhất là "aa bb cc de" mỗi đoạn 2 kí tự)
    abc def ghi a b c d e aa bb cc a a a a (đoạn dài nhất là "a b c d e" mỗi đoạn 1 kí tự)
    Output
    4
    5
    Dữ liệu nhập từ bàn phím

    Mình ko nhớ rõ đề cho lắm,mà cái đề cũng gần gần như vậy(Bài này mình làm 90' mới ra)
     
  2. nhatanh

    nhatanh Samus Aran the Bounty Hunter Lão Làng GVN

    Tham gia ngày:
    19/5/04
    Bài viết:
    6,456
    Nơi ở:
    Outworld
    Xét xâu thứ K (1<=K<=N)
    gọi F[i,j] là độ dài đoạn lặp trong khoảng [i,j] với i là đoạn thứ i, j là đoạn thứ j. Khởi tạo F[i,j]=0 hết,F[i,i]=1; M là số đoạn của xâu đang xét. Free=true nếu chưa xét i, Free=false nếu đã xét. Thế thì
    Mã:
    Max := 0;
    For(i=1;i<=m-1;i++)
     if (i là đoạn lặp && i chưa xét) 
    {Free[i]=false;
     j = i+1;
    while (j <=m)
    {     
      if (độ dài j!= độ dài j-1) break;
      if (j ko phải đoạn lặp) break;
      if (độ dài j != độ dài i) break;
               Free[j]=false;    
                F[i,j] = F[i,j-1]+1; 
       if (F[i,j]>max) max = F[i,j];
              j++;
    }
       
    }
    
    xong rồi in ra max, rồi lại làm lại với các xâu khác theo kiểu làm multi-test thôi:))
    cách làm này là trực quan nhất, độ phức tạp tới O(n^2), có thể sẽ có cách hay hơn:))
     
  3. Magic_fantasy

    Magic_fantasy Mr & Ms Pac-Man

    Tham gia ngày:
    22/6/06
    Bài viết:
    213
    Bài này khó khăn ko phải nằm ở thuật toán mà vấn đề nằm ở chỗ nhập dữ liệu(Cái này mới chết người nè)
    -Dòng đầu nhập n là số xâu kí tự.
    -n dòng sau mỗi dòng nhập 1 xâu kí tự.
     
  4. nhatanh

    nhatanh Samus Aran the Bounty Hunter Lão Làng GVN

    Tham gia ngày:
    19/5/04
    Bài viết:
    6,456
    Nơi ở:
    Outworld
    thì dùng một vòng lặp while rồi mỗi lần đọc vào là xử lí luôn, in ra luôn, rồi xuống dòng lại đọc, lại xử lí, lại in kết quả thôi:-/ bác có hay làm trên các trang online judge ko, cái này là một kiểu multi-test thôi mà:-/ mình thì thấy bài này hơi ngại đoạn xử lý xâu thôi;))
     
  5. Magic_fantasy

    Magic_fantasy Mr & Ms Pac-Man

    Tham gia ngày:
    22/6/06
    Bài viết:
    213
    Trang online judge là trang nào bạn giới thiệu mình với.Thanks vi đã giúp đỡ !!!
     
  6. nhatanh

    nhatanh Samus Aran the Bounty Hunter Lão Làng GVN

    Tham gia ngày:
    19/5/04
    Bài viết:
    6,456
    Nơi ở:
    Outworld
    online judge có nhiều lắm;)) có lẽ là bác thử làm trên spoj xem:))
     
  7. Magic_fantasy

    Magic_fantasy Mr & Ms Pac-Man

    Tham gia ngày:
    22/6/06
    Bài viết:
    213
    Thanks nhiều nha hôm bữa co s nghe ông thầy nói về online judge nhưng ko biết tìm ở đâu.
    Sẵn đây cũng xin hỏi thêm là khi nộp bài thì file mã nguồn,file Input,Output đặt tên như thế nào?
     
  8. nhatanh

    nhatanh Samus Aran the Bounty Hunter Lão Làng GVN

    Tham gia ngày:
    19/5/04
    Bài viết:
    6,456
    Nơi ở:
    Outworld
    input, output ko cần phải ghi đâu:))
    file mã nguồn cũng ko cần thiết phải đúng tên
    chỉ cần gửi đúng mã bài là được rồi:))
     
  9. Magic_fantasy

    Magic_fantasy Mr & Ms Pac-Man

    Tham gia ngày:
    22/6/06
    Bài viết:
    213
    Bạn ơi cho mình hỏi thêm mình gửi 3 bài cả 3 bài đều Accepted nhưng có 2 bài 100 điểm còn bài kia 0 điểm là sao?
    Mã:
    Congratulations! You have solved problem NKMSG.
    Your program in C++ from 2008-12-13 15:29:47 ran for 0.00 seconds and
    used 0 KB of memory
    
     
  10. nhatanh

    nhatanh Samus Aran the Bounty Hunter Lão Làng GVN

    Tham gia ngày:
    19/5/04
    Bài viết:
    6,456
    Nơi ở:
    Outworld
    Nhiều bài mình cũng bị thế, có thể là do dùng quá bộ nhớ bài đấy cho phép:-?(để mai mình hỏi lại xem, nhưng mấy bài mình được chấp nhận mà cũng 0 hết đều bị quá bộ nhớ cả nên chắc là đúng) btw, phải 100 điểm mới gọi là làm trọn vẹn cơ;))
    bài này nói chung tư tưởng là DFS rồi đánh dấu những thằng nào có thể làm "con" thằng khác, rồi cuối cùng xuất ra những thằng được xác định là "bố". Bài này mình chưa chấm bao giờ, nhưng thằng bạn mình làm theo cách này AC rồi:))
     

Chia sẻ trang này