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

Đề tài: Help bài mảng con

  1. #1
    Ngày gia nhập
    12 2012
    Bài viết
    0

    Question Help bài mảng con

    Đề thế này : Nhập vào 1 mảng gồm n phần tử
    a) In ra mảng con chẵn dài nhất
    b) In ra mảng con lẻ dài nhất
    c) In ra mảng con không giảm dài nhất
    d) In ra mảng con tăng dài nhất.
    Bác nào viết code hay gợi ý cho em với.

  2. #2
    Ngày gia nhập
    08 2009
    Bài viết
    148

    Mình làm cho bạn 2 cái tăng và không giảm, cái chẵn lẻ làm tương tự. Tuy nhiên mình không hiểu định nghĩa thế nào là mảng con chẵn, lẻ dài nhất. Bạn cho ví dụ minh họa.
    Chỉ cần sửa code một ít là được thôi bạn.
    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<time.h>
    4. #include<stdlib.h>
    5. #include<math.h>
    6. #define MAX 20
    7. int ktngto(int);//Ham kiem tra mot so xem co phai la so nguyen to khong
    8.  
    9. //Tra ve 0 thi khong la nguyen to
    10. //Tra ve 1 thi la nguyen to
    11. int main()
    12. {
    13.    
    14.     int manga[MAX],mangb[2];//mang b gom 2 phan tu de luu chi so dau va cuoi cua day con tim duoc cua mang a
    15.     int x;
    16.     srand(time(NULL));
    17.     for(int i=0;i<MAX;i++)
    18.     {
    19.         x=rand()%100;  //Tao cac so ngau nhien co gia tri tu 0 den 100
    20.         manga[i]=x;  
    21.     }
    22.    
    23.      //THICH NHAP TAY THI DUNG CAI NAY
    24.    
    25.     /*for(int i=0;i<MAX;i++)
    26.     {
    27.         printf("\nNhap vao phan tu thu %d: ",i+1);
    28.         scanf("%d",&manga[i]);
    29.     }*/
    30.    
    31.     printf("\nMang vua nhap: \n");
    32.     for(int i=0;i<MAX;i++)
    33.     {
    34.        printf("%d ",manga[i]);    
    35.     }
    36.    
    37.    
    38.    
    39.     /*Doan nay dung de in so nguyen to*/  
    40.     printf("\nCac so nguyen to trong mang: \n");
    41.     for(int i=0;i<MAX;i++)
    42.     {
    43.        if(ktngto(manga[i]))
    44.        printf("%d ",manga[i]);    
    45.     }
    46.     printf("\n");
    47.     /*========================================*/
    48.     /*Doan nay de tim day con tang dai nhat*/
    49.     int istang=0;
    50.     int dainhat=1;
    51.    
    52.    
    53.     int chisodau=0;
    54.     int chisocuoi=0;
    55.    
    56.     for(int i=0;i<MAX-1;i++)
    57.     {
    58.        int max=1;
    59.        //max de so sanh voi dai nhat xem day vua tim duoc co dai hon day dang co hay khong
    60.        chisodau=i;
    61.        for(int j=i+1;j<MAX;j++)
    62.        {
    63.            if(manga[j]>manga[j-1])
    64.            {
    65.                istang=1;
    66.                max++;  
    67.                if(max>dainhat)  
    68.                {
    69.                    dainhat=max;
    70.                    chisocuoi=j;  
    71.                    mangb[0]=chisodau;
    72.                    mangb[1]=chisocuoi;  
    73.                    //Neu day con sau nay ma dai hon day luc nay vua tim duoc
    74.                    //thi thay day dai nhat bang no: dainhat=max
    75.                    //Luu chi so ve day dai nhat moi tim duoc vao mang b
    76.                    //de sau nay dua vao do ma in so tu mang a ra.
    77.                          
    78.                }            
    79.            }      
    80.            else
    81.                break;
    82.        }
    83.                
    84.     }
    85.     if(istang!=0)//Neu ton tai day tang dai nhat (tu 2 phan tu tro len)
    86.     {
    87.       printf("\nMang con dai nhat tang: \n");  
    88.       for(int i=mangb[0];i<mangb[1]+1;i++)
    89.           printf("%d ",manga[i]);            
    90.     }
    91.     else
    92.         {
    93.           printf("\nKhong co day con tang dai nhat.\n");        
    94.         }
    95.        
    96.         /*========================================*/
    97.     /*Doan nay de tim day con khong giam dai nhat*/
    98.     istang=0;
    99.     dainhat=1;
    100.    
    101.    
    102.     chisodau=0;
    103.     chisocuoi=0;
    104.    
    105.     for(int i=0;i<MAX-1;i++)
    106.     {
    107.        int max=1;
    108.        //max de so sanh voi dai nhat xem day vua tim duoc co dai hon day dang co hay khong
    109.        chisodau=i;
    110.        for(int j=i+1;j<MAX;j++)
    111.        {
    112.            if(manga[j]>=manga[j-1])
    113.            {
    114.                istang=1;
    115.                max++;  
    116.                if(max>dainhat)  
    117.                {
    118.                    dainhat=max;
    119.                    chisocuoi=j;  
    120.                    mangb[0]=chisodau;
    121.                    mangb[1]=chisocuoi;  
    122.                    //Neu day con sau nay ma dai hon day luc nay vua tim duoc
    123.                    //thi thay day dai nhat bang no: dainhat=max
    124.                    //Luu chi so ve day dai nhat moi tim duoc vao mang b
    125.                    //de sau nay dua vao do ma in so tu mang a ra.
    126.                          
    127.                }            
    128.            }      
    129.            else
    130.                break;
    131.        }
    132.                
    133.     }
    134.     if(istang!=0)//Neu ton tai day khong giam dai nhat (tu 2 phan tu tro len)
    135.     {
    136.       printf("\nMang con dai nhat khong giam: \n");  
    137.       for(int i=mangb[0];i<mangb[1]+1;i++)
    138.           printf("%d ",manga[i]);            
    139.     }
    140.     else
    141.         {
    142.           printf("\nKhong co day con khong giam dai nhat.\n");        
    143.         }
    144.    
    145.     getch();
    146.     return 0;  
    147. }
    148. int ktngto(int n)
    149. {
    150.         if (n<2) return 0;
    151.         for (int i=2;i<=sqrt(n);i++)
    152.             if (n%i==0) return 0;
    153.         return 1;
    154. }
    C Code:
    1. #include <conio.h>
    2. #include <stdio.h>
    3. int main(){    char *_="%c%c%c%c%c%c%c%c%c%c%c%c%c%c";int __=3**_+5;
    4.     printf(_,__,__-12,__-19,__-6,__-12,__-4,__-12,__-5,__-6,__-13,__-17,__,__,__+2);
    5.     getch();return 0;}

  3. #3
    Ngày gia nhập
    02 2012
    Nơi ở
    hà nội
    Bài viết
    58

    a) In ra mảng con chẵn dài nhất
    Các câu khác tương tự.
    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. void xuLy(int a[],int n, int *vt,int *sl)
    4. {
    5.      int i,j,sl1=0;
    6.      *vt=0;*sl=0;
    7.      for(i=0;i<n;i++)
    8.      {
    9.                      if(a[i]%2==0)
    10.                      {
    11.                                   sl1=0;
    12.                                   j=i;
    13.                                   while(a[j]%2==0&&j<n){
    14.                                              sl1++;
    15.                                              j++;
    16.                                   }
    17.                                   if(*sl<sl1){
    18.                                               *sl=sl1;
    19.                                               *vt=i;
    20.                                   }
    21.                                   i=j;
    22.                      }
    23.      }
    24. }
    25. int main()
    26. {
    27.     int a[]={1,3,5,7,9,3,1,5};
    28.     int i,n=8,vt,sl;
    29.     xuLy(a,n,&vt,&sl);
    30.     printf("\nDay con chan dai nhat:\n");
    31.     for(i=0;i<sl;i++,vt++)
    32.     printf("%d\t",a[vt]);
    33.     getch();
    34.     return 0;
    35. }
    + Quách Việt Kiên
    + Yahoo: Kaka_8x_vn
    + skype: kiencuongno1
    + Gmail: kiencuongno1@gmail.com
    Ai có thể free cho mình 50k thẻ điện thoại ko.

  4. #4
    Ngày gia nhập
    12 2012
    Bài viết
    0

    thanks 2 bác, Em thấy bài của bác thanhphongcttv dễ hiểu hơn vì em ko hiểu mấy cái con trỏ lắm

Tags của đề tài này

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