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

Đề tài: Xử lí cái tổng vô hạn | Tính tổng các phần tử trong mảng lớn hơn và nhỏ hơn số M

  1. #1
    Ngày gia nhập
    04 2009
    Bài viết
    35

    Angry Xử lí cái tổng vô hạn | Tính tổng các phần tử trong mảng lớn hơn và nhỏ hơn số M

    Viết chương trình tính tổng các phần tử trong mảng lớn hơn số M và tổng các phần tử trong mảng nhỏ hơn M sao cho 2 tổng này xấp xỉ nhau(gần bằng nhau).


    Input: Một mảng có thứ tự (bao gồm cả các phần tử trùng nhau).
    Một số M được nhập từ bàn phím.
    1 2 3 4 M 7 8 9 10 11 13 15

    Output:
    Tìm tổng một số phần tử bên trái và tổng một số phần tử bên phải, sao cho:
    abs(Tổng bên trái-tổng bên phải) nhỏ nhất.
    Liệt kê các phần tử tham gia vào tổng bên trái và các phần tử tham gia vào mảng bên phải.

    Ví dụ, dãy trên:
    M=5;
    Tổng bên trái có thể là TT: 1 hoặc 1+2 hoặc 1+3 hoặc 2+3+4....
    Tổng bên phải có thể là TP: 7 hoặc 7+9 hoặc 11+13+15...

    Nhưng ta thấy TT=3+4=7
    ----------------TP=7
    TT=TP=7

    Xuất ra:
    Tổng bên trái là: 7
    Các số tham gia tổng trái: 3+4
    Tổng bên phải là: 7
    Các số tham gia vào tổng phải: 7


    Hoặc:
    Tổng bên trái là: 8
    Các số tham gia tổng trái: 1+3+4
    Tổng bên phải là: 8
    Các số tham gia vào tổng phải: 8


    Hoặc:


    Tổng bên trái là: 10
    Các số tham gia tổng trái: 1+2+3+4
    Tổng bên phải là: 10
    Các số tham gia vào tổng phải: 10
    Hết!
    Rất mong các bác ủng hộ! viết giúp em đoạn code của cái ni khó wa'! thank nhìu

  2. #2
    Ngày gia nhập
    11 2008
    Bài viết
    203

    Bạn tham khảo code ở đây nhé!
    PHP Code:
    http://forums.congdongcviet.com/showthread.php?t=17067 
    Mà sao bác viết giống mình y đúc vậy? Chắc bác quote lại rùi phải không? Vậy bạn quên quote cái ý tưởng giải quyết bài này của mình rồi. Nó phải dùng 2 mảng rất khổng lồ đấy!
    Love chưa nghĩ được cách nào hay hơn cách mà love nghĩ ở trên. Các bạn có ý tưởng thì cứ post lên, mình nghĩ có người sẽ làm được mà.
    Đã được chỉnh sửa lần cuối bởi Loveanygirls : 11-05-2009 lúc 02:32 PM.
    Tôi tin rằng: giải thuật thì có thể tìm trong hàng trăm GB ebook, hoặc Google nhưng code chạy thì chưa chắc! Hãy post code để chứng tỏ giải thuật của bạn là đúng!
    Giải thuật là bản thiết kế của ngôi nhà, code là phần xây dựng. Nếu chỉ xây nhà trên giấy thì ta sống chả khác nào người nguyên thủy.

  3. #3
    Ngày gia nhập
    04 2009
    Bài viết
    35

    hic đây là mả giả cái tổng vô hạn chua chạy được thông càm gà mà?
    y tưởng là cho các phần tử nhỏ cộng lại rùi lại cộng cái lớn hơn cho đến khi a[i] là max
    int xulitong(int a[],int c,int *m)
    {
    int i=1,j,b[1000];
    int n=1,k;
    k=a[c]+1;
    for(;i<=c
    {
    for(j=0;;j++)
    {
    n++;
    if(b[j]==k)
    {
    b[j]=a[i];
    b[n]=k;
    break;
    }
    b[n]=b[j]+a[i];
    }
    i++;
    }
    m=b;
    ++n;
    return n;
    }
    @love : mình copy bài cua thằng trong 4rum trường bài thầy cho về nhà tự xử cho vui ! U có phải hay ko? thái

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

    Tớ chắc chắn không phải là người chung trường với cậu rồi. Chắc là bạn cậu cũng copy trên CĐCV xuống rồi.
    Tôi tin rằng: giải thuật thì có thể tìm trong hàng trăm GB ebook, hoặc Google nhưng code chạy thì chưa chắc! Hãy post code để chứng tỏ giải thuật của bạn là đúng!
    Giải thuật là bản thiết kế của ngôi nhà, code là phần xây dựng. Nếu chỉ xây nhà trên giấy thì ta sống chả khác nào người nguyên thủy.

  5. #5
    Ngày gia nhập
    04 2009
    Bài viết
    35

    hem bài này thầy tớ cho tự xử mà thôi ko bàn nữa!
    hình như code cuối ko giải quyết được bài toán phải hem mình chạy ko được

  6. #6
    Ngày gia nhập
    04 2009
    Bài viết
    35

    Mặc định Xử lí cái tổng vô hạn | Tính tổng các phần tử trong mảng lớn hơn và nhỏ hơn số M

    giúp mình chạy code về bài này đi huhu 10 ngày đánh vật vơi snos mà chưa xong!!!!!!1
    PHP Code:
    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    int xulitong(int a[],int c,int *m);
    void thanhphantong(int a[],int n,int *q,int A,int b,char s);
    int Min(int *p,int a,int *q,int b,int *d);
    int *N,*p,*d,*q,p1,q1,*C;

    main()
    {
    int c[256], b[256];
    int a[50], i,j=0,k,M,I,J;
    char s[15];
    printf("nhap so phan tu cua mang "); scanf("%d",&k);
    for(
    i=0;i<k;i++)
     {
      
    printf("\na[%d]",i);
      
    scanf("%d",&a[i]);
      }
      
    printf("\n nhap vao so M");
      
    scanf("%d",&M);
      for(
    I=0,i=0;i<k;i++)// sep tong trai tong phai
       
    if(a[i]<M)
       {
        
    c[i]=a[i];
        
    I++;
        }
        if(
    a[i]>M)
        {
         
    b[j]=a[i];
         
    J++;
         }
         
    p1=xulitong(c,I,p);
         
    q1=xulitong(b,J,q);
      
    /*   for(i=0;i<p1;i++)
          printf("tong la %d ",p[i]);
         for(j=0;j<q1;j++)
         printf("tong la %d ",q[j]);   */
         
    J=Min(p,p1,q,q1,d);
         for(
    i=0;i<J;i++)
          {
           if(
    i%2==0)
         {
           
    s[0]="trai" ;
           
    thanhphantong(c,I,p,p1,d[i],s);
          }
           if(
    i%2!=0)
         {
           
    s[0]="phai"thanhphantong(b,J,&q,q1,d[i],s);
          }
    int xulitong(int a[],int c,int *m)//sep tu nho den lon
    {
      
    int i=1,j,b[1000];
      
    int n=1,k;
       
    k=a[c]+1;
       
    b[0]=a[0]; b[1]=k;// gan gia tri dau a[0], gan gia tri kiem tra k
      
    for(;i<=c;)// cho a[i] chay co the coi nhu i chay
      
    {
       for(
    j=0;;j++)// cho j chay tuc cac phan tu mang b chay
       
    {
         
    n++;
         if(
    b[j]==k// nhan dien diem dung
         
    {
          
    b[j]=a[i]; //lua a[i]
           
    b[n]=k;   // luu diem dung
           
    break;
          }
         
    b[n]=b[j]+a[i];  //ko dung thi lua tong b[j] va[i]
        
    }
        
    i++;
       }
       
    m=&b;  //luu dia chi mang b
       
    ++n;
       return 
    n;// xuat so phan tu mang b
     
    }
           }
    int Min(int *p,int a,int *q,int b,int *d)
    {
     
    int i,j,*c,,k,m;
     for(
    i=0;i<a;i++) //abs cac tong
       
    for(j=0;j<b;j++)
         {
           
    c[k]=abs(p[i]-q[j]);
           
    k++;
          }
      
    m=c[0];
      for(
    j=0;j<k;j++) // kiem tra min
      
    if(m>c[j])
        
    m=c[j];
     for(
    i=0;i<a;i++)  // sep cac tong co abs la =min vao mang
       
    for(k=0,j=0;j<b;j++)
         {
           if(
    m==abs(p[i]-q[j]));
        {
          
    d[k]=p[i];
          
    d[k+1]=q[j];
          
    k+=2;

          }
         }
    return(
    k);         // xuat so phan tu cua mang
    }
    thanhphantong(int a[],int n,int *p,int A,int b,char s//dem kiu to hop
     
    {
       
    int m,s,d=0,M;
       for(
    i=1;i<n;i++)
      {
       
    s*=2;
       
    q[i]=s;m=b;
      }
    tt:  for(i=0;i<=A;i++)
           if(
    b==p[i])
        {
          if(
    d==0printf("\n thanh phan tong %s la:",s);
         for(
    j=0;j<n;j++)
          if(
    q[j]>i)
            {
              
    i-q[j-1]==kprintf("%d",a[j-1]);
              for(
    m=0;m<j;m++)
               {
             if(
    k==q[m])
             {
               
    printf("%d",p[k]); d=0;b=M;;break;
             }
              if(
    s!=0)
             {
              
    b=q[k]; d=1; goto tt// quay lai dem voi gia tri k bi h thay doi
             
    }
              break;
             }
            }
         }
    }



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

  1. Lập trình C tìm xem trong mảng số nguyên i_Mang[] có bao nhiêu phần tử có giá trị âm & phần tử có giá trị âm trong mảngn
    Gửi bởi fawker trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 29-05-2013, 03:28 PM
  2. Bài tập C xóa phần tử trùng nhau trong mảng 1 chiều để lại 1 phần tử
    Gửi bởi ronoa trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 06-01-2012, 10:46 PM
  3. Thủ tục loại bỏ các phần tử trùng nhau, giữ lại duy nhất 1 phần tử trong DSLK
    Gửi bởi mrtyoffline trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 02-03-2011, 10:27 PM
  4. Thuật toán trên C | Xóa phần tử trong dãy phần tử tăng dần?
    Gửi bởi quangphuit 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-03-2010, 01:57 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