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

Đề tài: Bài tập sử dụng đệ quy trên mảng một chiều!!

  1. #1
    Ngày gia nhập
    11 2011
    Bài viết
    3

    Question Bài tập sử dụng đệ quy trên mảng một chiều!!

    Mình có một bài tập thế này.
    Cho một mảng các số nguyên có n số, hãy sử dụng đệ quy liệt kê các nhóm phần tử có tổng nhỏ hơn một số M.

    Vd: mảng nhập vào là {4,20,45,13,70}, M=50

    =>kết quả là:

    4 20
    4 45
    4 13
    20 13
    4 20 13
    Các bạn giúp mình nhé. Cảm ơn.

  2. #2
    Ngày gia nhập
    03 2010
    Nơi ở
    My Home
    Bài viết
    772

    C Code:
    1. #include <stdio.h>
    2. #include <memory.h>
    3. #include <malloc.h>
    4.  
    5. void combination(int* a, int* evaluated, int n, int * sum, int * set_number, int max, int start, int current)
    6. {
    7.     int i, j;
    8.     if(current >= n)
    9.         return;
    10.     for(i = start; i < n; i++)
    11.     {
    12.         if(!evaluated[i])
    13.         {
    14.             evaluated[i] = 1;
    15.             *sum += a[i];
    16.             if(*sum <= max)
    17.             {
    18.                 if(current > 0)
    19.                 {
    20.                     printf("set %d: ", ++*(set_number));
    21.                     for(j = 0; j < n; j++)
    22.                         if(evaluated[j])
    23.                             printf("%4d", a[j]);
    24.                     printf("\n");
    25.                 }
    26.                 combination(a, evaluated, n, sum, set_number, max, i + 1, current + 1);
    27.             }
    28.             evaluated[i] = 0;
    29.             *sum -= a[i];
    30.         }
    31.     }
    32. }
    33. int main(int argc, char *argv[])
    34. {
    35.     int a[] = {4,20,45,13,70};
    36.     int * evaluated;
    37.     int M   = 50;
    38.     int size;
    39.     int sum = 0;
    40.     int set_number = 0;
    41.  
    42.     size = sizeof(a) / sizeof(int);
    43.     evaluated = (int *)malloc(size * sizeof(int));
    44.     memset(evaluated, 0, size * sizeof(int));
    45.     combination(a, evaluated, size, &sum, &set_number, M, 0, 0);
    46.     free(evaluated);
    47.     return 0;
    48. }

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

  1. Trả lời: 4
    Bài viết cuối: 10-09-2012, 06:34 PM
  2. In ra các kết quả phép chia trên dòng đầu tiên và n ra kết quả 3: phép chia cho thứ tự
    Gửi bởi anhhung0917 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 19-01-2011, 10:01 PM
  3. ucln trên từng dòng trên mảng 2 chiều
    Gửi bởi huongtan trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 09-01-2011, 02:13 AM
  4. Sắp xếp các phần tử mảng 2 chiều theo chiều giảm dần trên mỗi cột
    Gửi bởi bi_ngo_9x trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 09-12-2010, 10:43 PM
  5. Con trỏ trên C | Chuyển mảng 1 chiều thành 2 chiều?
    Gửi bởi angle12 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 04-01-2010, 04:43 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