Thuật toán tìm dãy con lớn nhất

Thảo luận trong 'Thuật toán' bắt đầu bởi haihung_9x, 15 Tháng tư 2011.

  1. Offline

    haihung_9x

    • Friends

    • Chém gió đỉnh cao
    Số bài viết:
    353
    Đã được thích:
    271
    Điểm thành tích:
    220
    Dưới đây là code thuật toán tìm dãy con lớn nhất hay nói cụ thể hơn là tìm dãy con có tổng max.

    Mã:
    #include <iostream>
    using namespace std;
    
    int tong(int a[], int left, int right)
    {
        return left==right ? a[left] : a[left]+tong(a, left+1, right);
    } 
    
    void main()
    {
        int a[100], n,i,j;
    	cout<<" Nhap so phan tu cua day: ";
        cin >> n;
        for (i=0; i<n; i++)
    		{
    		cout<<"A["<<i<<"]=";
    		cin >> a[i];
    		}
        
        int max = a[0], max1;
        int imax = 0, jmax = 0;
        
        for (i=0; i<n; i++)
            for (j=i; j<n; j++)
            {
                if(i==0 && j==n-1);
                max1 = tong(a, i, j);
                if(max1 > max) {max = max1; imax = i; jmax = j;}
            }
        
        
    	    cout<<"Day ban dau la: ";
    	    for (i=0; i<n; i++)
    		cout<<a[i]<< " ";
            
        cout <<"\nDay con lon nhat(co tong max) la: ";
        for (i=imax; i<=jmax; i++)
        cout<<a[i]<<" ";
    	cout<<"Co tong trong so la: "<<max<<endl;
     
    }
    
    integer thích bài này.

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí