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

Đề tài: đưa ra dãy số dương liên tiếp dài nhất trong mảng!

  1. #1
    Ngày gia nhập
    03 2011
    Nơi ở
    H5N1
    Bài viết
    42

    Question đưa ra dãy số dương liên tiếp dài nhất trong mảng!

    đề bài:
    nhập vào 1 dãy số nguyên, đưa ra dãy con gồm những số duơng liên tiếp dài nhất
    ví dụ: 4 -3 6 7 4 3 -9 7 5 -4 thì dãy con phải đưa ra là: 6 7 4 3

    đây là code của mình nhưng không ra được kết quả> mọi người xem giúp với:
    Code:
    #include <iostream.h>
    #include <stdio.h>
    #include <conio.h>
    struct nguyen
    {
    	int dem;
    	int x[50];
    }; nguyen v[15];
    void main()
    {
    	int a[50],b[50],j,k,n,d;
       cout<<"Nhap vao so phan tu cua day: ";
       cin>>n;
       cout<<"Nhap vao day so nguyen: "<<endl;
       for(int i=0;i<n;i++)
       {
       	cout<<"a["<<(i+1)<<"]= ";
          cin>>a[i];
       }
       j=0;
       k=0;
       d=0;
       while(j<n)
       {
       	if(a[j]>0)
          {
          	v[k].x[d]=a[j];
             v[k].dem++;
             d++;
             j++;
             if(a[j]>0 && a[j-1]<=0) k++;
          }
          else
          {
          j++;
          }
       }
       int chiso;
       int max=v[0].dem;
       for(int i=1;i<=k;i++)
       {
       	if(v[i].dem>max)
          {
          	max=v[i].dem;
             chiso=i;
          }
       }
       cout<<"Day so duong dai nhat la: "<<endl;
       for(int i=0;i<max;i++)
       	cout<<v[chiso].x[i];
       getch();
    }

  2. #2
    Ngày gia nhập
    10 2011
    Bài viết
    552

    C++ Code:
    1. while(j<n)
    2.    {
    3.     if(a[j]>0)
    4.       {
    5.         v[k].x[d]=a[j];
    6.          v[k].dem++;
    7.          d++;
    8.          j++;
    9.          if(a[j]>0 && a[j-1]<=0) k++;
    10.         // Điều này làm sao có thể xảy ra được ? khi a[j cũ] >0 rồi ta làm .vân vân... rồi  tăng j lên.
    11.         // Thì rõ ràng a[j-1]( a[j cũ]) ko thể nào <=0 được .
    12.         //Bởi vì a[j-1] chính là cái a[j] ở câu if đầu tiên . 1 đối tượng ko thể tự nó mâu thuẫn đc :D
    13.         // Đẫn đến hệ quả : Mệnh đề  (a[j]>0 && a[j-1]<=0) luôn trả về 0 , cho nên k++ ko bao giờ dc thực hiện
    14.       }

  3. #3
    Ngày gia nhập
    12 2009
    Nơi ở
    The country of happiness
    Bài viết
    182

    có thể cài stack
    C++ Code:
    1. #include<iostream>
    2. #include<cstdio>
    3. #include<cstdlib>
    4. #include<string>
    5. #include<cstring>
    6. #include<stack>
    7. #include<queue>
    8. using namespace std;
    9.  
    10. int n, x, y;
    11. queue<int> st;
    12.  
    13. vector<int> ret;
    14. vector<int> id;
    15.  
    16. int irun = 0, retid, idrun = 0;
    17. int lenmax = -1, tmplen;
    18.  
    19. int main() {
    20.     freopen("input.txt","r",stdin);
    21.     freopen("output.txt","w",stdout);
    22.     cin >> n;
    23.     id.push_back(0);
    24.     while(n-- != 0){
    25.         cin >> x;
    26.         if(st.empty() || x > 0){
    27.             st.push(x);
    28.         }
    29.         else {
    30.             tmplen = 0;
    31.             while(!st.empty()){
    32.                 tmplen++;
    33.                 y = st.front();
    34.                 ret.push_back(y);
    35.                 st.pop();
    36.             }
    37.             irun += tmplen;
    38.             id.push_back(irun);
    39.             if(tmplen > lenmax){
    40.                 lenmax = tmplen;
    41.                 retid = idrun;
    42.             }
    43.              idrun++;
    44.         }
    45.     }
    46.     if(!st.empty()){
    47.         tmplen = 0;
    48.         while(!st.empty()){
    49.                 tmplen++;
    50.                
    51.                 y = st.front();
    52.                 ret.push_back(y);
    53.                 st.pop();
    54.         }
    55.         irun += tmplen;
    56.             id.push_back(irun);
    57.         if(tmplen > lenmax){
    58.                 lenmax = tmplen;
    59.                 retid = idrun;
    60.         }
    61.     }
    62.    
    63.     cout << "lenmax : " << lenmax << endl;
    64.     for(int i = id[retid]; i < id[retid+1]; ++i){
    65.         cout << ret[i] << " " ;
    66.     }
    67. }

    Input :
    Code:
    10
    4 -3 6 7 4 3 -9 7 5 -4
    Trích dẫn Nguyên bản được gửi bởi Wazi Armstrong Xem bài viết
    Ôi skill của mình đã đạt đến hàng tuyệt đỉnh
    Không chỉ ăn, tắm, đi lại có thể code
    Mà giờ đã mình có thể code cả khi ngủ. Code tạm vào buffer của não, lúc nào dậy chỉ việc viết ra một cách trôi chảy không lưỡng lự.
    PS: Nếu ngủ dài rảnh rảnh có thể debug luôn, dậy chỉ việc build ?
    Trích dẫn Nguyên bản được gửi bởi vietanh8286 Xem bài viết
    Lập trình viên giỏi là lập trình viên có vợ

  4. #4
    Ngày gia nhập
    03 2011
    Nơi ở
    H5N1
    Bài viết
    42

    Code:
    #include <iostream.h>
    #include <stdio.h>
    #include <conio.h>
    struct nguyen
    {
    	int dem;
    	int x[50];
    }; nguyen v[15];
    void main()
    {
    	int a[50],b[50],j,k,n,d;
       cout<<"Nhap vao so phan tu cua day: ";
       cin>>n;
       cout<<"Nhap vao day so nguyen: "<<endl;
       for(int i=0;i<n;i++)
       {
       	cout<<"a["<<(i+1)<<"]= ";
          cin>>a[i];
       }
       j=0;
       k=0;
       d=0;
       while(j<n)
       {
       	if(a[j]>0)
          {
          	v[k].x[d]=a[j];
             v[k].dem++;
             d++;
             j++;
             if(a[j]<=0 && a[j+1]>0)
             {
             	k++;
                d=d-d;
             }
          }
          else
          {
            if(a[j]<=0 && a[j+1]>0)
             {
             	k++;
                d=d-d;
             }
          j++;
          }
       }
       int chiso;
       int max=v[0].dem;
       for(int i=1;i<=k;i++)
       {
       	if(v[i].dem>max)
          {
          	max=v[i].dem;
             chiso=i;
          }
       }
       cout<<"Day so duong dai nhat la: "<<endl;
       for(int i=0;i<max;i++)
       	cout<<v[chiso].x[i];
       getch();
    }
    mình đã sửa như sau

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

    @xoycontinue : Thế sửa lại vậy rồi có còn lỗi gì nữa ko ?

  6. #6
    Ngày gia nhập
    03 2011
    Nơi ở
    H5N1
    Bài viết
    42

    Mặc định đưa ra dãy số dương liên tiếp dài nhất trong mảng!

    mình sửa lại thì nó chạy đc rồi nhưng mà vẫn chưa chắc chắn là không có vấn đề j, nhờ mọi người kiểm tra lại giúp

  7. #7
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Trích dẫn Nguyên bản được gửi bởi xoycontinue Xem bài viết
    mình sửa lại thì nó chạy đc rồi nhưng mà vẫn chưa chắc chắn là không có vấn đề j, nhờ mọi người kiểm tra lại giúp
    Sao lại thế ? Chạy dc ngon rồi mà lại bảo ?
    Thế thì cứ tiếp tục test tiếp sẽ lòi lỗi ra , rồi hoàn thiện tiếp. Hoàn thiện ko dc thì lại mang lỗi lên đây hỏi nhé

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

  1. tổng liên tiếp lớn nhất của mảng
    Gửi bởi Creepy trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 25-11-2013, 05:33 PM
  2. Tìm dãy con liên tiếp có tổng lớn nhất
    Gửi bởi doantai1988 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 8
    Bài viết cuối: 19-08-2012, 11:16 AM
  3. tìm 3 số liên tiếp có tích nhỏ nhất và 3 số liên tiếp có tổng lớn nhất trong dãy số thực
    Gửi bởi starter trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 19
    Bài viết cuối: 11-06-2011, 11:36 AM
  4. THuật toán tính tổng lớn nhất của 2 phần tử liên tiếp đầu tiên trong mảng
    Gửi bởi caphetim trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 19
    Bài viết cuối: 10-04-2011, 07:51 AM
  5. Cách tìm dãy số 0 liên tiếp dài nhất
    Gửi bởi gnourt2 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 08-06-2007, 09:56 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