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

Đề tài: Cách in in tổ hợp n số nguyên

  1. #1
    Ngày gia nhập
    09 2011
    Nơi ở
    Khi ta ở chỉ là nơi đất ở, khi ta đi đất bỗng hóa tâm hồn
    Bài viết
    55

    Mặc định Cách in in tổ hợp n số nguyên

    Em muốn một chương trình làm việc sau:
    - Nhập dãy 1,2,3
    - nhập k = 2
    chương trình sẽ in ra:
    - 1,2
    -1,3
    -2,3
    Ai có code cho mình tham khảo nhé. Hiện đang rất cần. Mình đã tìm nhiều code khác và chỉnh lại nhưng không được.
    Cái thuở còn đánh con bé hàng xóm chỉ vì nó không xách cặp hộ đi học. Cái thuở thèm làm người lớn, để bố mẹ khỏi đánh đòn đau mỗi khi mắc lỗi, để được “con nít” gọi mình là người lớn. Cái thuở con nít. Cái thuở ấy xa thật xa. Cô bé hàng xóm đi lấy chồng. Tôi không còn con nít. Và đôi lúc cái thằng người lớn như đã ước mơ một thời, giờ…Vâng…Rất lạ..Có khi nó muốn làm con nít!

  2. #2
    Ngày gia nhập
    01 2011
    Nơi ở
    -Mountain-
    Bài viết
    768

    Trích dẫn Nguyên bản được gửi bởi nang Xem bài viết
    Em muốn một chương trình làm việc sau:
    - Nhập dãy 1,2,3
    - nhập k = 2
    chương trình sẽ in ra:
    - 1,2
    -1,3
    -2,3
    Ai có code cho mình tham khảo nhé. Hiện đang rất cần. Mình đã tìm nhiều code khác và chỉnh lại nhưng không được.
    Đây là bài tập tổ hợp. Công thức của nó là n!/(n - k)!k!
    Nếu muốn đơn giản hơn về cách làm thì biến đổi công thức nhé còn nếu không thì tính giai thừa
    Hướng dẫn C++: https://www.youtube.com/watch?v=BwLodoQdoY4&list=PL1c9Uxlo-mplJDRGdONNupgo5OCBTyGGn

  3. #3
    Ngày gia nhập
    09 2011
    Nơi ở
    Khi ta ở chỉ là nơi đất ở, khi ta đi đất bỗng hóa tâm hồn
    Bài viết
    55

    Trích dẫn Nguyên bản được gửi bởi beautifulsoul84hung Xem bài viết
    Đây là bài tập tổ hợp. Công thức của nó là n!/(n - k)!k!
    Nếu muốn đơn giản hơn về cách làm thì biến đổi công thức nhé còn nếu không thì tính giai thừa
    Tất nhiên là mình biết công thức đó. Mình muốn code để giải bài này cơ. Mình đã soạn 1 code nhưng bị lỗi như sau:
    C++ Code:
    1. #include<iostream.h>
    2. /*----------------------------------------------------------------------------*/
    3. class Result
    4. {
    5.     private:
    6.     int x[100];
    7.     int n,k;
    8.     public:    
    9.     void Nhap();   
    10.     void In();
    11.     void Tim(int i);
    12. };
    13. /*----------------------------------------------------------------------------*/
    14. void Result::Nhap()
    15. {
    16.         cout<<"Nhap n la so Max:    "; cin>>n;
    17.         do{cout<<"Nhap k la so phan tu, k<="<<n<<": "; cin>>k;}while(k>n);
    18.         x[0]=0;
    19. }
    20. /*----------------------------------------------------------------------------*/
    21. void Result::In()
    22. {
    23.     int i;
    24.     for(i=1;i<=k;i++) cout<<x[i]<<" ";
    25.     cout<<"\n";
    26. }
    27. /*----------------------------------------------------------------------------*/
    28. void Result::Tim(int i)
    29. {
    30.     int j;
    31.     for(j=i;j<=n-k+i;j++)
    32.         {
    33.             x[i]=j;
    34.             if(i==k)  In(); else Tim(i+1);
    35.         }      
    36. }
    37. /*----------------------------------------------------------------------------*/
    38. int main()
    39. {
    40.     Result ob;
    41.     ob.Nhap();
    42.     ob.Tim(1);
    43.     return 0;
    44. }
    45. /*----------------------------------------------------------------------------*/
    Cái thuở còn đánh con bé hàng xóm chỉ vì nó không xách cặp hộ đi học. Cái thuở thèm làm người lớn, để bố mẹ khỏi đánh đòn đau mỗi khi mắc lỗi, để được “con nít” gọi mình là người lớn. Cái thuở con nít. Cái thuở ấy xa thật xa. Cô bé hàng xóm đi lấy chồng. Tôi không còn con nít. Và đôi lúc cái thằng người lớn như đã ước mơ một thời, giờ…Vâng…Rất lạ..Có khi nó muốn làm con nít!

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

    #include<iostream>

    using namespace std;

    const int MN=10000;

    char s[MN],kq[MN];
    bool d[MN];
    int n,k;

    void inkq()
    {
    cout << endl;
    for(int i=1;i<=k;i++)
    cout << kq[i] << " ";
    }

    int truy(int x,int tr)
    {
    int i;
    for(i=0;i<n;i++)
    {
    if((!d[i])&&(i>=tr))
    {
    kq[x]=s[i];
    d[i]=true;
    if(x==k) inkq();
    else truy(x+1,i);
    d[i]=false;
    }
    }
    }

    void test()
    {
    cin >> s; n=strlen(s);
    cin >> k;
    memset(d,false,sizeof(d));
    truy(1,0);
    cout << endl;
    }

    int main()
    {
    test();
    system("pause");
    return 0;
    }


    MÌNH SINH QUAY LUI OK ĐÓ . MÌNH DÙNG CHUỔI CHO MAU , BẠN KHÔNG THÍCH THÌ CHUYỂN QUA MẢNG SỐ SINH TƯƠNG TỰ NHÉ !
    TRÊN CON ĐƯỜNG ĐI ĐẾN THÀNH CÔNG KHÔNG CÓ DẤU CHÂN CỦA KẺ LƯỜI BIẾNG !!

    KHI ĐÃ THÀNH CÔNG THÌ ĐỪNG NÊN NGỦ QUÊN TRÊN CHIẾN THẮNG :

  5. #5
    Ngày gia nhập
    09 2011
    Nơi ở
    Khi ta ở chỉ là nơi đất ở, khi ta đi đất bỗng hóa tâm hồn
    Bài viết
    55

    Sao nó không in ra gì vậy bạn? Bạn có thể chỉ rõ thêm được không?
    Cái thuở còn đánh con bé hàng xóm chỉ vì nó không xách cặp hộ đi học. Cái thuở thèm làm người lớn, để bố mẹ khỏi đánh đòn đau mỗi khi mắc lỗi, để được “con nít” gọi mình là người lớn. Cái thuở con nít. Cái thuở ấy xa thật xa. Cô bé hàng xóm đi lấy chồng. Tôi không còn con nít. Và đôi lúc cái thằng người lớn như đã ước mơ một thời, giờ…Vâng…Rất lạ..Có khi nó muốn làm con nít!

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

    Mặc định Cách in in tổ hợp n số nguyên

    à mình lười nên viết bằng chuổi đòi hỏi bạn phải nhập dãy số liên tiếp , bạn nhập rời thì viết mãng int a[] nhé !!!

    DÒNG ĐẦU BẠN NHẬP DÃY LIÊN TIẾP ENTER SAU ĐÓ NHẬP K LÀ OK

    Quan trọng là cách sinh thôi.

    Mình dùng quay lui sinh cũng hơi tồi 1 chút .
    TRÊN CON ĐƯỜNG ĐI ĐẾN THÀNH CÔNG KHÔNG CÓ DẤU CHÂN CỦA KẺ LƯỜI BIẾNG !!

    KHI ĐÃ THÀNH CÔNG THÌ ĐỪNG NÊN NGỦ QUÊN TRÊN CHIẾN THẮNG :

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

    Mình xin đóng góp thêm một bài, bài này sử dụng vòng lặp để duyệt lần lượt các tổ hợp
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    int show(int *s,int k)
    {
        for (int i=1;i<=k;i++)
    	printf("%d ",s[i]);
        printf("\n");
        return 0;
    }
    int main()
    {
        int i=0,n,k,s[100];
        clrscr();
        printf("n= "); scanf("%d",&n);
        printf("k= "); scanf("%d",&k);
        for (i=0;i<=k;i++) s[i]=i; 
        show(s,k);
        while (1)
        {
    	   for (i=k;i>=0;i--)
    	    if (s[i]<(n-k+i)) break;
    	   if (i==0) break;
    	   s[i]++;
    	   while (++i<=k) s[i]=s[i-1]+1;
    	   show(s,k);
        }
        getch();
        return 0;
    }
    _______..___________..__.........__..__________... ___...___________.
    \.......... \.\_...._____//....\......./....\\______......\.|.....|\_....._____/
    /......|.....\..|...... __)_\.....\/\/......./..|.......|..._/.|.....|.|.....__)_
    /......|.......\|.............\\............../....|......|......\|.....|.|............\
    \____|__...//_______.../.\ __ /\.../......|______.../.|___|/______.../
    .............\/..............\/...........\/...................\/.....................\/

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

    Trích dẫn Nguyên bản được gửi bởi kngochai Xem bài viết
    Mình xin đóng góp thêm một bài, bài này sử dụng vòng lặp để duyệt lần lượt các tổ hợp
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    int show(int *s,int k)
    {
        for (int i=1;i<=k;i++)
    	printf("%d ",s[i]);
        printf("\n");
        return 0;
    }
    int main()
    {
        int i=0,n,k,s[100];
        clrscr();
        printf("n= "); scanf("%d",&n);
        printf("k= "); scanf("%d",&k);
        for (i=0;i<=k;i++) s[i]=i; 
        show(s,k);
        while (1)
        {
    	   for (i=k;i>=0;i--)
    	    if (s[i]<(n-k+i)) break;
    	   if (i==0) break;
    	   s[i]++;
    	   while (++i<=k) s[i]=s[i-1]+1;
    	   show(s,k);
        }
        getch();
        return 0;
    }
    nếu theo lý thuyết thì cái này lặp vô hạn mà? Nhưng chương trình vẫn ra kết quả? sao kì dzay? ai giúp mình đi!

  9. #9
    Ngày gia nhập
    12 2009
    Nơi ở
    bế quan tu lại
    Bài viết
    846

    lý thuyết nói vì sao nó lặp vô hạn vậy, chỉ mình với ^^

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

    sorry mình nhầm

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

  1. Bài tập C giải thuật nhập vào số nguyên n in ra n số nguyên tố đầu tiên?
    Gửi bởi LTC trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 48
    Bài viết cuối: 25-04-2013, 07:40 PM
  2. Viết chương trình nhập số nguyên dương n, liệt kê n số nguyên tố đầu tiên.
    Gửi bởi maiit trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 19-06-2011, 01:05 PM
  3. Game Viết chương trình nhập số nguyên dương n, liệt kê n số nguyên tố đầu tiên trên C#?
    Gửi bởi maiit trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 18
    Bài viết cuối: 08-06-2011, 11:12 PM
  4. Bài tập C++ chương trình đổi 1 số nguyên trong hệ thập phân sang hệ fibo và cộng 2 số nguyên được
    Gửi bởi nghiapro512 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: 23-01-2011, 02:14 PM
  5. Lập trình C xin code cài đặt thuật toán sàng nguyên tố để liệt kê các số nguyên tố 2->480000
    Gửi bởi ngocdung_088 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 23
    Bài viết cuối: 06-12-2010, 11:53 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