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

Đề tài: thắc mắc về code C!!

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

    Mặc định thắc mắc về code C!!

    đề bài là tìm các dãy hoán vị của tập gồm n phần tử {1,2,3,...,n} với n là số nguyên dương
    ví dụ nhập n=3 thì kết quả là: 123, 132, 213, 231, 312, 321.
    dưới đây là code của mình và kết quả nó ra là: 123, 132, 321, 210.Mọi người xem giúp mình sai chỗ nào và góp ý nhé, cảm ơn ạ.

    #include<stdio.h>
    void InDay(int a[],int n)

    {
    for(int i=0;i<n;i++)
    printf("%5d",a[i]);
    printf("\n");
    }
    void HoanDoi(int &a,int &b)
    {
    int tam=a;
    a=b;
    b=tam;
    }
    void SapXepTang(int vt,int a[],int n)
    {
    for(int i=vt;i<n-1;i++)
    {
    for(int j=i+1;j<n;j++)
    {if(a[i]<a[j])
    HoanDoi(a[i],a[j]);
    }
    }
    }
    void TimDay(int a[],int n)

    {
    InDay(a,n);
    int i=n-1;
    while(1)
    {
    for(i=n-1;i>0;i--)
    {
    if(a[i-1]<a[i])
    break;
    }
    for(int j=n-1;j>=i-1;j--)
    if(a[i]>a[i-1])
    { HoanDoi(a[i],a[i-1]);
    SapXepTang(i,a,n);
    InDay(a,n);
    }

    }
    }



    int main()
    {
    int a[100]={1,2,3};
    int n;
    printf("Nhap n:");
    scanf("%d",&n);
    TimDay(a,n);
    }

  2. #2
    Ngày gia nhập
    08 2017
    Bài viết
    1,108

    Trích dẫn Nguyên bản được gửi bởi nhapmon123 Xem bài viết
    đề bài là tìm các dãy hoán vị của tập gồm n phần tử {1,2,3,...,n} với n là số nguyên dương
    ví dụ nhập n=3 thì kết quả là: 123, 132, 213, 231, 312, 321.
    dưới đây là code của mình và kết quả nó ra là: 123, 132, 321, 210.Mọi người xem giúp mình sai chỗ nào và góp ý nhé, cảm ơn ạ.
    ...
    1 - định dạng cho dễ đọc
    C Code:
    1. #include<stdio.h>
    2. void InDay(int a[],int n){
    3.     for(int i=0;i<n;i++)
    4.     printf("%5d",a[i]);
    5.     printf("\n");
    6. }  
    7. void HoanDoi(int &a,int &b){
    8.     int tam=a;
    9.     a=b;
    10.     b=tam;
    11. }
    12. void SapXepTang(int vt,int a[],int n){
    13.     for(int i=vt;i<n-1;i++)
    14.     {
    15.        for(int j=i+1;j<n;j++)
    16.         if(a[i]<a[j]) HoanDoi(a[i],a[j]);      
    17.     }      
    18. }
    19. void TimDay(int a[],int n){
    20.     InDay(a,n);
    21.     int i=n-1;
    22.     while(1)
    23.     {
    24.         for(i=n-1;i>0;i--)
    25.         {
    26.             if(a[i-1]<a[i]) break;
    27.         }
    28.         for(int j=n-1;j>=i-1;j--)
    29.         if(a[i]>a[i-1]){
    30.             HoanDoi(a[i],a[i-1]);
    31.             SapXepTang(i,a,n);
    32.             InDay(a,n);
    33.         }      
    34.     }
    35. }
    36.  
    37. int main(){
    38.     int a[100]={1,2,3};
    39.     int n;
    40.     printf("Nhap n:");
    41.     scanf("%d",&n);
    42.     TimDay(a,n);
    43. }
    2 - trong cviet có mả nguồn liệt kê hoán vị rồi.
    3 - viết chú thích, đọc code chán lắm, cho trình biên dịch nó đọc hay hơn

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