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

Đề tài: Dãy con dài nhất

  1. #1
    Ngày gia nhập
    01 2010
    Bài viết
    11

    Angry Dãy con dài nhất

    bài của mình là :
    nhập hai dãy số nguyên tìm dãy con chung dài nhất

  2. #2
    Ngày gia nhập
    12 2009
    Nơi ở
    Hà Nội
    Bài viết
    535

    Có đoạn code tìm dãy con có tổng bằng S, viết bằng pascal hồi học cấp 3, bạn tham khảo xem
    PHP Code:
    uses crt;
    var 
    St:array[1..40000of byte;
        
    a:array[1..100of integer;
        
    N,i,j,max,maxt:integer;
        
    s:longint;
        
    f1,f2:text;
    BEGIN
    clrscr
    ;
           
    assign(f1,'inday.txt');
           
    assign(f2,'daycon.OUT');
           
    reset(f1);
           
    rewrite(f2);
           
    readln(f1,N,S);
           for 
    i:=1 to N do
               
    read(f1,a[i]);

           for 
    i:=1 to S do st[i]:=0;

           
    St[a[1]]:=1;
           
    maxt:=0;
           for 
    i:=1 to N do
             
    begin
               max
    :=maxt;
               for 
    j:=maxt downto 0 do
                   
    begin
                        
    if (st[j]<>0) and (st[j+a[i]]=0) and (j+a[i]<=Sthen
                           begin
                                st
    [j+a[i]]:=i;
                                if 
    max<j+a[ithen max:=j+a[i];
                           
    end;
                   
    end;
               
    maxt:=max;
             
    end;
           if 
    st[s]<>0 then writeln(f2,'1');
           while 
    s>do
              
    begin
                 i
    :=st[s];
                 if 
    i>0 then writeln(f2,i,' ',a[i]);
                 
    s:=s-a[i];
              
    end;
           
    close(f2);
    readln;
    END

  3. #3
    Ngày gia nhập
    01 2010
    Bài viết
    11

    hj cám ơn bạn nhưng mình chỉ học lập trình c\c++ nên không hiểu thuật toán trên là gì bạn có thể dùng ngôn ngữ c hoặc c++ dc không
    với lại mình cũng chưa dựoc học cách nhâp từ file nên hơi khó hiểu

  4. #4
    Ngày gia nhập
    08 2008
    Bài viết
    22

    Ta có thể làm như sau :
    PHP Code:
    #include <stdio.h>
    #include <conio.h>

    void Nhap(int a[], int n)
    {
        for (
    int i 0i<ni++)
            
    scanf("%d",&a[i]);
    }

    void In(int a[], int n)
    {
        for (
    int i 0i<ni++)
            
    printf("%d ",a[i]);
    }

    int Tim(int a[], int nint x)
    {
        for (
    int i 0i<ni++)
            if (
    a[i] == x)
                return 
    i;
        return 
    0;
    }
    //
    int DayConChung(int a[], int nint b[], int mint &max)
    {
        
    int k,jsptvt;
        
    max 0;
        for (
    int i 0ni++)
        {
            
    Tim(b,m,a[i]);
            if (
    != -1)
            {
                
    spt 0;
                
    i;
                while ((
    j<n) && (k<m))
                {
                    if (
    b[k] == a[j])
                    {
                        
    spt++;
                        
    j++;
                        
    k++;
                    }
                    else
                        break;

                }
                if (
    spt max)
                {
                    
    vt i;
                    
    max spt;
                }

            }
        }
        return 
    vt;
    }
    void main()
    {
        
    clrscr();
        
    int a[100], b[100];
        
    int nmmax;
        
    5;
        
    5;
        
    Nhap(a,n);
        
    Nhap(b,m);
        
    In(a,n);
        
    printf("\n");
        
    In(b,m);
        
    printf("\n");
        
    int vt;
        
    vt DayConChung(a,n,b,m,max);
        if (
    max == 0)
            
    printf("Khong co day con chung");
        else
        {
            
    printf("Day con chung dai nhat co %d phan tu: ",max);
            for (
    int i 0maxi++)
                
    printf("%d ",a[vt+i]);
        }
        
    getch();


  5. #5
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    2,987

    1.
    Trích dẫn Nguyên bản được gửi bởi duytue Xem bài viết
    if (k != -1)
    [/PHP]
    if (k != -1) ka của bạn làm sao mà bằng -1 được mà lại so sánh với -1 được ? theo mình chỗ này của bạn hình như là 0


    2. Nếu :
    mảng 1 là : 1 2 3 4 0 0
    mảng 2 là : 1 2 0 1 2 3 4 0
    thì chắc chắn code bạn ra ko đúng rồi
    Đã được chỉnh sửa lần cuối bởi langman : 03-03-2010 lúc 03:39 PM.
    ^_,^
    Mình là 1 con gà trong công nghệ.
    Nếu mình có nói gì làm bạn không vui thì mong bạn bỏ qua cho, vì cá nhân mình còn gà lắm, và mình có ý tốt thôi.

    Bùi Tấn Quang

  6. #6
    Ngày gia nhập
    01 2010
    Bài viết
    11

    Mặc định Dãy con dài nhất

    hjhjhj thank mọi người giờ mình đã làm dc rùi

  7. #7
    Ngày gia nhập
    08 2008
    Bài viết
    22

    Phần code trên đúng là mình chưa xét đủ các trường hợp. Ta có thể sửa 2 hàm Tim và DayConChung lại như sau :
    PHP Code:
    void Tim(int a[], int nint xint c[], int &t)
    {
        
    0;
        for (
    int i 0i<ni++)
            if (
    a[i] == x)
            {
                
    c[t] = i;
                
    t++;
            }
    }
    int DayConChung(int a[], int nint b[], int mint &max)
    {
        
    int kjlsptvtt;
        
    int c[100];
        
    max 0;
        for (
    int i 0ni++)
        {
            
    Tim(b,m,a[i],c,t);
            for (
    0tl++)
            {
                
    c[l];
                
    spt 0;
                
    i;
                while ((
    j<n) && (k<m))
                {
                    if (
    b[k] == a[j])
                    {
                        
    spt++;
                        
    j++;
                        
    k++;
                    }
                    else
                        break;
                }
                if (
    spt max)
                {
                    
    vt i;
                    
    max spt;
                }
            }
        }
        return 
    vt;

    Hàm tìm dựa trên ý tưởng là ta sẽ tìm tất cả các vị trí xuất hiện của phấn tử a[i] trong mảng b và ta sẽ lưu lại các vị trí này trong 1 mảng. Dựa vào các vị trí này thì ta có thể xét được tất cả các dãy con chung bắt đầu bằng phần tử a[i].
    Bài này mình nghĩ sao thì cứ code ra như vậy thôi nên mong các bạn góp ý thêm

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

  1. Sửa máy tính, cài đặt windows, phần mềm tại nhà nhanh nhất, rẻ nhất, hiệu quả nhất …
    Gửi bởi hopluccc 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: 08-07-2013, 02:07 PM
  2. Trả lời: 12
    Bài viết cuối: 25-10-2012, 02:48 AM
  3. Bài tập C++ NHập mảng một chiều gồm n phần tử kết thúc nhập khi nhập một chữ cái
    Gửi bởi thienthanoze trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 15
    Bài viết cuối: 09-07-2012, 10:10 PM
  4. Bài tập C++ Viết phương trình nhập vào 1 chuỗi số.Hãy nhập vào 1 số.Đếm xem có bao nhiêu chữ số bạn vừa nhập
    Gửi bởi namtuocdn trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 16-10-2011, 10:39 AM
  5. Bài tập C++ Nhập mảng 1 chiều, nếu phần tử nhập trùng nhau thì bắt nhập lại
    Gửi bởi danielh 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: 09-07-2011, 03:35 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