Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 14 kết quả

Đề tài: Code tìm dãy con tăng dài nhất không chạy được lỗi do đâu?

  1. #1
    Ngày gia nhập
    07 2008
    Bài viết
    21

    Mặc định Code tìm dãy con tăng dài nhất không chạy được lỗi do đâu?

    Code:
    #include <stdio.h>
    #include <conio.h>
    #define max 10000
    
    void nhap(int a[],int n)
    {
         printf("Nhap so phan tu cua day n = ");
         scanf("%d",&n); 
         for(int i=1;i<=n;i++){
                 printf("a[%d]=",i);
                 scanf("%d",&a[i]);
                 }
                 }     
    main()
    {
      int a[max+1],L[max+1],T[max+1];
      int n;
      nhap(a,n);
      int i,j,jmax;
    
            a[0]=-32768;
            a[n+1]=32767;   
              L[n+1]=1;
              
              for(i=n;i>=0;i--){
                                jmax=n+1;
                                for(j=i+1;j<=n+1;j++)
                                if((a[j]>a[i])&&(L[j]>L[jmax]))jmax=j;
                                L[i]=L[jmax]+1;
                                T[i]=jmax;
                                }
      printf("Day~con dai`nhat'co'do dai`la`%d phan`tu?",L[0]-2);
      printf("\nCac'phan`tu? cua? day~do'la`:\n");
      i=T[0]; 
      while(i<n+1){
                   printf("%d",a[i]);
                   i=T[i];
                   }
                                            
                                
      getch();	
    }
    Chương trình không chạy được
    Mọi người giúp mình tìm lỗi nhé
    Thanks
    PhI nGự4 trÊn gI4Ng Hồ
    t4 mẶc sỨc TiÊu Gi40
    4nH hÙnG kHônG uỐn gỐi
    Dù gÁi đẸp NhưỜnG nÀo

  2. #2
    Ngày gia nhập
    11 2007
    Nơi ở
    Biết để làm gì?
    Bài viết
    827

    Chưa test code của bạn nhưng mới nhìn qua thấy không ổ ở hàm nhập,bạn viết thì làm sao lấy ra giá trị của n được,phải dùng con trỏ chứ?
    Bạn mà dùng VC để biên dịch chắc chắn nó sẽ đưa ra warning : n chưa được khởi tạo.
    Nếu bạn dùng TC thì khi để max lớn như thế có thể cũng bị lỗi đấy.
    Cánh Chym ứ mỏi

  3. #3
    Ngày gia nhập
    07 2008
    Bài viết
    21

    Trích dẫn Nguyên bản được gửi bởi dieucay555 Xem bài viết
    Chưa test code của bạn nhưng mới nhìn qua thấy không ổ ở hàm nhập,bạn viết thì làm sao lấy ra giá trị của n được,phải dùng con trỏ chứ?
    Bạn mà dùng VC để biên dịch chắc chắn nó sẽ đưa ra warning : n chưa được khởi tạo.
    Nếu bạn dùng TC thì khi để max lớn như thế có thể cũng bị lỗi đấy.
    Cảm ơn bạn đã góp ý
    Mong bạn tìm giùm mình lỗi sai ở hàm quicksort vì viết lại hàm nhập bằng con trỏ thì vẫn vậy
    PhI nGự4 trÊn gI4Ng Hồ
    t4 mẶc sỨc TiÊu Gi40
    4nH hÙnG kHônG uỐn gỐi
    Dù gÁi đẸp NhưỜnG nÀo

  4. #4
    Ngày gia nhập
    11 2007
    Nơi ở
    Biết để làm gì?
    Bài viết
    827

    Trích dẫn Nguyên bản được gửi bởi RedHatLinux9 Xem bài viết
    Cảm ơn bạn đã góp ý
    Mong bạn tìm giùm mình lỗi sai ở hàm quicksort vì viết lại hàm nhập bằng con trỏ thì vẫn vậy
    Tớ nói chỗ hàm nhâp là vì nếu viết hàm nhập như của bạn thì sau khi gọi hàm nhập ở main thì giá trị của n là bao nhiêu?bạn debug sẽ thấy ngay lỗi.
    Cánh Chym ứ mỏi

  5. #5
    Ngày gia nhập
    07 2008
    Bài viết
    21

    Trích dẫn Nguyên bản được gửi bởi dieucay555 Xem bài viết
    Tớ nói chỗ hàm nhâp là vì nếu viết hàm nhập như của bạn thì sau khi gọi hàm nhập ở main thì giá trị của n là bao nhiêu?bạn debug sẽ thấy ngay lỗi.
    À đúng rồi cảm ơn bạn nha
    PhI nGự4 trÊn gI4Ng Hồ
    t4 mẶc sỨc TiÊu Gi40
    4nH hÙnG kHônG uỐn gỐi
    Dù gÁi đẸp NhưỜnG nÀo

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

    Mặc định Code tìm dãy con tăng dài nhất không chạy được lỗi do đâu?

    #include <iostream>

    using namespace std;

    #define MAX 1000

    // CTDL
    int a[MAX] = {1,2,0,6,9,4,3,15};
    int n = 8;


    int F[MAX];
    int truoc[MAX];


    void LapBang()
    {
    int i, j;

    F[0] = 1;
    truoc[0]=-1;

    for (i=1; i<n; i++)
    {
    int max;
    int jmax;

    // f(i) = max{f(j): j<i va a(j)<a(i)}
    max = 0;
    jmax=-1;
    for (j=0; j<i; j++)
    if (a[j] < a[i] && max<F[j])
    {
    max = F[j];
    jmax = j;
    }
    F[i] = max + 1;
    truoc[i] = jmax;
    }
    }

    void Xuat(int a[], int n)
    {
    int i;

    for (i=0; i<n; i++)
    {
    cout.width(3);
    cout << a[i];
    }

    cout << endl;
    }

    void TruyVet()
    {
    int fMax;
    int iMax;

    int i;

    fMax = F[0];
    for (i=1; i<n; i++)
    if (fMax < F[i])
    {
    fMax = F[i];
    iMax = i;
    }

    cout << "Do dai day con tang dai nhat la: "
    << fMax << endl;

    cout << a[iMax] << " ";
    while (iMax != -1)
    {
    iMax = truoc[iMax];
    if (iMax != -1)
    cout << a[iMax] << " ";
    }

    cout << endl;
    }

    void main()
    {
    LapBang();
    Xuat(a, n);
    Xuat(F, n);
    Xuat(truoc, n);

    TruyVet();
    }

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

    Bài của các bạn là tìm dãy dài nhất mà không quan tâm có liền nhau hay không? Bây giờ thử xử lý tìm dãy con dài nhất liền nhau xem như thế nào nhá.
    ví dụ: đầu vào là 6, 1, 7, 8, 2, 30, 9, 11
    đầu ra sẽ là: 1, 7, 8

  8. #8
    Ngày gia nhập
    09 2009
    Nơi ở
    Hoa sơn tuyệt đỉnh
    Bài viết
    407

    Dãy liền nhau thì có thể tìm trong O(n)

    my houses
    my school
    tỐnG lÊ cHâN mAnG kỶ nIệM bUồN cHo AnH...

  9. #9
    Ngày gia nhập
    08 2010
    Bài viết
    82

    Mặc định Dãy con tăng dài nhất liền nhau.

    Gửi các bạn bài viết dãy con tăng dài nhất liền nhau
    ví dụ:
    Dãy ban đầu: 98, 2, 3, 7, 1, 5, 4
    Kết quả:2, 3, 7
    Code:
    void day_tang(int a[], int n)
    {
    int vt, vtc, sl, slm, i, j;
    i=0;
    slm=1;//de luu so luong cua day dai nhat
    vtc=0;//luu vi tri cuoi cua day dai nhat
    vt=0;//luu vi tri cua day dang xet
    sl=1;//luu so luong cua day dang xet
    while(i<n-1)
    {
    
    if(a[i]<a[i+1])
    {
       vt=i+1;
       sl++;
    }
    else
    {
    sl=1;//neu ko tang nua thi lam lai tu dau
    //vt=i;
    }
    if(slm<sl)
    {
    slm=sl;
    vtc=vt;
    }
    i++;
    }
    for(i=vtc-slm+1;i<=vtc;i++)
       printf("%d, ",a[i]);
    }

  10. #10
    Ngày gia nhập
    08 2011
    Nơi ở
    Hà Đông - Hà Nội
    Bài viết
    2

    Trích dẫn Nguyên bản được gửi bởi RedHatLinux9 Xem bài viết
    Cảm ơn bạn đã góp ý
    Mong bạn tìm giùm mình lỗi sai ở hàm quicksort vì viết lại hàm nhập bằng con trỏ thì vẫn vậy
    Code:
    #include <stdio.h>
    #include <conio.h>
    #define max 10000
    
    void nhap(int *a,int *n)
    {
         printf("Nhap so phan tu cua day n = ");
         scanf("%d",n); 
         for(int i=1;i<=*n;i++)
         {
                 printf("a[%d]=",i);
                 scanf("%d",a+i);
         }
    }     
    int main()
    {
      int a[max+1],L[max+1],T[max+1];
      int n;
      nhap(a,&n);
      int i,j,jmax;
    
            a[0]=-32768;
            a[n+1]=32767;   
              L[n+1]=1;
              
              for(i=n;i>=0;i--)
              {
                                jmax=n+1;
                                for(j=i+1;j<=n+1;j++)
                                if((a[j]>a[i])&&(L[j]>L[jmax]))jmax=j;
                                L[i]=L[jmax]+1;
                                T[i]=jmax;
              }
      printf("Day~con dai`nhat'co'do dai`la`%d phan`tu?",L[0]-2);
      printf("\nCac'phan`tu? cua? day~do'la`:\n");
      i=T[0]; 
      while(i<n+1)
      {
                   printf("%d",a[i]);
                   i=T[i];
      }
                                            
                                
      getch();	
    }
    Đc r` mà bạn. Bạn chỉ cần sửa lại hàm nhập a vs n là con trỏ.OK!

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

  1. code không lỗi nhưng chạy bị lỗi[DSLK,khi nhập vào 2 số là bị stop]
    Gửi bởi fithou91192 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 04-11-2011, 07:33 AM
  2. Nhập vào một ma trận vuông và kiểm tra xem nó có đối xứng qua đường chéo chính không?sao code không chạy???
    Gửi bởi nguyendinhha trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 3
    Bài viết cuối: 20-09-2011, 03:57 PM
  3. chạy không thành công đoạn code sau về xắp xếp tăng dần
    Gửi bởi hoangdreaming trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 28-04-2011, 11:39 PM
  4. code tìm cây có trọng lượng nhỏ nhất bằng giải thuật prim-cách chạy tay code này
    Gửi bởi ruacon_206 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: 25-04-2011, 02:27 PM
  5. Nhạc chế của dân code :))
    Gửi bởi dieucay555 trong diễn đàn Giải trí - Thư giãn
    Trả lời: 6
    Bài viết cuối: 04-04-2009, 08:47 AM

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