Announcement

Collapse
No announcement yet.

[PASCAL] Giúp mình một bài toán nhỏ :D

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [PASCAL] Giúp mình một bài toán nhỏ :D

    Đề bài: Cho một dãy n số nguyên nhập từ bàn phím, tìm ra một dãy trong dãy n gồm m phần tử liên tiếp ( m < n) sao cho dãy m phần tử này có tổng là lớn nhất, sau khi tìm đc dãy m ghi ra màn hình các phần tử của nó
    ai giúp em với (
    em xin cảm ơn
    Last edited by Guest; 23-11-2011, 17:54.

  • #2
    Cái này thì giống như tìm m phần tử lớn nhất của dãy thôi.
    Bình tĩnh - Tự tin - Không cay cú
    Âm thầm, lặng lẽ trả thù sau

    Comment


    • #3
      m phần tử này là liên tiếp nhau phải không bạn?
      Chưa....

      Comment


      • #4
        ủa sao bài này e suy nghĩ thấy ngộ nhỉ? ko biết có hiểu sai đề ko? đề nghị bạn vd rõ ràng.
        - nếu là dãy liên tiếp: tìm tổng phần tử liên tiếp lớn nhất. ko phải cứ xét 2 phần tử ở bên cuối cùng trái và phải, bên nào lớn hơn thì lấy bên đó cộng các phần tử còn lại là ra dãy dài nhất sao???
        vd : 6 2 3 5 7 12 : chọn dãy từ phần tử 2 đến cuối cùng.
        -Nếu là dãy ko liên tiếp: cứ tìm phần tử nhỏ nhất loại đi, in ra các phần tử còn lại.
        Như vậy dãy tìm đc luôn có số phần tử là m=n-1 (=.=)! vậy thì nó đơn giản qá!
        Hix ko biết e nghĩ có sót gì ko??

        Comment


        • #5
          Originally posted by 11520673 View Post
          ủa sao bài này e suy nghĩ thấy ngộ nhỉ? ko biết có hiểu sai đề ko? đề nghị bạn vd rõ ràng.
          - nếu là dãy liên tiếp: tìm tổng phần tử liên tiếp lớn nhất. ko phải cứ xét 2 phần tử ở bên cuối cùng trái và phải, bên nào lớn hơn thì lấy bên đó cộng các phần tử còn lại là ra dãy dài nhất sao???
          vd : 6 2 3 5 7 12 : chọn dãy từ phần tử 2 đến cuối cùng.
          -Nếu là dãy ko liên tiếp: cứ tìm phần tử nhỏ nhất loại đi, in ra các phần tử còn lại.
          Như vậy dãy tìm đc luôn có số phần tử là m=n-1 (=.=)! vậy thì nó đơn giản qá!
          Hix ko biết e nghĩ có sót gì ko??
          Theo anh thì m, n nhập từ bàn phím, và chuỗi con gồm m phần tử liên tiếp.
          VD: n = 9: dãy 4 7 2 9 8 3 1 5 10, m= 4 -> chuỗi cần tìm là 7 2 9 8.

          Comment


          • #6
            Originally posted by 11520673 View Post
            ủa sao bài này e suy nghĩ thấy ngộ nhỉ? ko biết có hiểu sai đề ko? đề nghị bạn vd rõ ràng.
            - nếu là dãy liên tiếp: tìm tổng phần tử liên tiếp lớn nhất. ko phải cứ xét 2 phần tử ở bên cuối cùng trái và phải, bên nào lớn hơn thì lấy bên đó cộng các phần tử còn lại là ra dãy dài nhất sao???
            vd : 6 2 3 5 7 12 : chọn dãy từ phần tử 2 đến cuối cùng.
            -Nếu là dãy ko liên tiếp: cứ tìm phần tử nhỏ nhất loại đi, in ra các phần tử còn lại.
            Như vậy dãy tìm đc luôn có số phần tử là m=n-1 (=.=)! vậy thì nó đơn giản qá!
            Hix ko biết e nghĩ có sót gì ko??
            Ý tưởng của em ban đầu anh cũng nghĩ vậy, nhưng mà cái đề bảo là số nguyên => bao gồm cả số âm và số dương => Nếu lấy hết lỡ có trường hợp dãy có nhiều số âm nên làm tổng nhỏ đi...

            Comment


            • #7
              Originally posted by 08520522 View Post
              m phần tử này là liên tiếp nhau phải không bạn?
              uwfh đúng rồi

              Comment


              • #8
                ý tưởng của em thế này ( mong các anh hoàn thiện giúp)
                ban đầu tính tổng dãy m số đầu tiên lấy đó làm max
                sau đó tính tổng các dãy m số tiếp theo ( đem so sánh với max nếu nó lớn hơn thì gán max = cái tổng này)
                cuối cùng viết ra cái max và các phần tử của nó
                giống anh 08520522 ý

                Comment


                • #9
                  m là cho biết trước hay không biết trước ?
                  Khoảng cách giữa bạn và ước mơ của bạn là bao xa ?

                  Comment


                  • #10
                    Originally posted by 10520108 View Post
                    Cái này thì giống như tìm m phần tử lớn nhất của dãy thôi.
                    đơn giản thế này em đem hỏi làm j =,=

                    Comment


                    • #11
                      Originally posted by 09520019 View Post
                      m là cho biết trước hay không biết trước ?
                      cái m là mình nhập vào

                      Comment


                      • #12
                        Originally posted by dai6cnt View Post
                        ý tưởng của em thế này ( mong các anh hoàn thiện giúp)
                        ban đầu tính tổng dãy m số đầu tiên lấy đó làm max
                        sau đó tính tổng các dãy m số tiếp theo ( đem so sánh với max nếu nó lớn hơn thì gán max = cái tổng này)
                        cuối cùng viết ra cái max và các phần tử của nó
                        giống anh 08520522 ý
                        mình thấy ý tưởng bạn đúng roài đó

                        Comment


                        • #13
                          uhm, tại đọc đề không kỹ. hihi. Cái này cách làm đại loại là như dai6cnt nói ở trên.
                          Nhưng mà không cần phải liên tục tính tổng m số hạng như vậy đâu.
                          Chỉ cần mỗi lần duyệt thì so sánh: nếu (số bớt đi) < (số thêm vào) ==> max= max - (số bớt đi) + (số thêm vào) và lưu vị trí đầu tiên của dãy tạo max này thôi.
                          Bình tĩnh - Tự tin - Không cay cú
                          Âm thầm, lặng lẽ trả thù sau

                          Comment


                          • #14
                            Originally posted by dai6cnt View Post
                            ý tưởng của em thế này ( mong các anh hoàn thiện giúp)
                            ban đầu tính tổng dãy m số đầu tiên lấy đó làm max
                            sau đó tính tổng các dãy m số tiếp theo ( đem so sánh với max nếu nó lớn hơn thì gán max = cái tổng này)
                            cuối cùng viết ra cái max và các phần tử của nó
                            giống anh 08520522 ý
                            đúng r còn gì!
                            theo mình bạn k cần tính tổng m dãy đầu tiên làm max làm j, cứ cho max=0;
                            PHP Code:
                            for i:=1 to n-do 
                            begin
                            dem
                            :=1;
                            tong:=0;
                            ptu:=i;
                            while (
                            dem<=m) and (ptu<=n) do 
                            begin
                            tong
                            :=tong+a[ptu];
                            inc(dem);
                            inc(ptu);
                            end;
                            if 
                            dem=m then if tong>max then ... {luu vào max moi và luu vi trí phần tử khởi đầu dãy max
                            end
                            đó là ý tưởng của mình! hy vọng có thể giúp bạn! nếu sai thì nói mình để mình biết với!
                            Last edited by 11520673; 24-11-2011, 10:42.

                            Comment


                            • #15
                              Originally posted by 10520108 View Post
                              uhm, tại đọc đề không kỹ. hihi. Cái này cách làm đại loại là như dai6cnt nói ở trên.
                              Nhưng mà không cần phải liên tục tính tổng m số hạng như vậy đâu.
                              Chỉ cần mỗi lần duyệt thì so sánh: nếu (số bớt đi) < (số thêm vào) ==> max= max - (số bớt đi) + (số thêm vào) và lưu vị trí đầu tiên của dãy tạo max này thôi.
                              gõ xong đọc lại mới thấy bài của a này.hay hơn cách e =.="
                              ah làm cách này vậy mình hình dung ra vầy :
                              PHP Code:
                              for i:=1 to m do max:=max+a[i];{tìm dãy đầu tiên từ phần tử 1 đem làm max như bạn nói}
                              for 
                              i:=2 to n-m+do if (max-a[i-1]+a[i+m-1]) >max then {luu max moi va luu vi tri i dau tien
                              mình còn nhớ kỹ pascal nên ghi dùm bạn luôn code!

                              Comment

                              LHQC

                              Collapse
                              Working...
                              X