نمایش نتایج 1 تا 16 از 16

نام تاپیک: زیرمجموعه های k عضوی یک مجموعه n

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1

    نقل قول: زیرمجموعه های k عضوی یک مجموعه n

    سلام
    لطفا کدهاتون رو توی تگ قرار بدین تا واضح باشه.

  2. #2

    نقل قول: زیرمجموعه های k عضوی یک مجموعه n

    نقل قول نوشته شده توسط sr2m72 مشاهده تاپیک
    سلام
    لطفا کدهاتون رو توی تگ قرار بدین تا واضح باشه.
    چشم ببخشید
    منظورتون این طوریه؟؟

    [ #include<iostream>
    #include<conio.h>
    #include<time.h>



    int **m;
    long q=0;
    long num=0;
    long number=0;


    long fact( long n )
    {
    return ( n > 0 ? n*fact(n-1) : 1 );
    }

    long C( long n , long r )
    {
    return ( fact(n)/(fact(r)*fact(n-r)) );
    }

    bool isPrinted(int *a, long n)
    {
    bool is=true;
    for(long i=0;i<num;i++)
    {
    is=true;
    for(long j=0;j<n;j++)
    {
    if(a[j]!=m[i][j])
    {
    is=false;
    }
    }
    if(is)return true;
    }
    return false;
    }

    void print(int *a,long n)
    {
    int swap=0;
    for(long i=0;i<n;i++)
    {
    for(long j=i;j<n;j++)
    {
    if(a[j]<a[i])
    {
    swap=a[i];
    a[i]=a[j];
    a[j]=swap;
    }
    }
    }
    if(!isPrinted(a,n))
    {
    number++;
    cout<<number<<".{";
    for(long i=0;i<n;i++)
    {
    cout<<a[i];
    m[q][i]=a[i];
    if(i!=n-1)
    {
    cout<<",";
    }
    }
    q++;
    cout<<"}"<<endl;
    }
    }

    void printAll(int *a,int *b,long n,long k)
    {
    if(q<num)
    {
    if(k==1)
    {
    print(a,n);
    }
    if(k==0)
    {
    print(a,n);
    }
    else if(k>0)
    {
    int *c, *d;
    long p=0;
    for(long j=0;j<k;j++)
    {
    p=0;
    c=new int[k-1];
    for(long t=0;t<k;t++)
    {
    if(t!=j)
    {
    c[p]=b[t];
    p++;
    }
    }
    d=new int[n];
    for(long i=-1;i<n;i++)
    {
    for(long t=0;t<n;t++)
    {
    d[t]=a[t];
    }
    if(i!=-1)
    {
    d[i]=b[j];
    }
    printAll(d,c,n,k-1);
    }
    }
    delete c , d;
    }
    }
    }
    void subset (int *a,long n,long k){ int *b=new int[k];
    int *c=new int[n-k];
    for(long i=0;i<n;i++)
    {
    if(i<k)
    {
    b[i]=a[i];
    }
    else
    {
    c[n-i-1]=a[i];
    }
    }
    num=C(n,k);
    m=new int*[C(n,k)];
    for(long i=0;i<C(n,k);i++)
    {
    m[i]=new int[k];
    }
    printAll(b,c,k,n-k);

    delete a , b , c;
    for(int j=0;j<num;j++){
    cout<<"{" ;
    for(int s=0;s<k;s++){

    cout<<m[j][s]<<"," ;

    }
    cout<<"}";
    }}

    int main()

    {
    // time_t start , end;
    long n = 0 , k = 0,t=0;
    cout<<"Tedade ozv haye majmue:";
    cin>>n;
    cout<<"Tedade ozv haye zir majmue:";
    cin>>k>>t;
    cout<<"Ozv haye majmue ra vared konid:"<<endl;
    int *a=new int[n];
    for(long i=0;i<n;i++)
    {
    cin>>a[i];
    }



    cout<<"S={";
    for( long i = 0 ; i < n ; i++ )
    {
    cout<<a[i];
    if( i != n-1 )
    cout<<",";
    }
    cout<<"}"<<endl;
    num=C(n,k);
    subset(a,n,k);
    int **z;
    z=new int *[num];
    for(int j=0;j<num;j++){
    z[j]=new int[k];
    for(int s=0;s<k;s++){
    z[j][s]=m[j][s];

    }
    }
    int *b1;
    b1=new int [k];
    for(int j=0;j<k;j++){
    b1[j]=z[0][j];

    cout<<b1[j]<<"," ;

    cout<<"."<<endl; }
    subset(b1,num,t) ;


    delete b1,z;


    getch();
    return 0;


    }]

  3. #3

    نقل قول: زیرمجموعه های k عضوی یک مجموعه n

    ببخشید من نمیدونم منظورتون چیه؟؟

  4. #4

    نقل قول: زیرمجموعه های k عضوی یک مجموعه n

    نقل قول نوشته شده توسط razroz مشاهده تاپیک
    ببخشید من نمیدونم منظورتون چیه؟؟
    اینطوری:

    #include<iostream>
    #include<conio.h>
    #include<time.h>

    int **m;
    long q=0;
    long num=0;
    long number=0;

    long fact( long n )
    {
    return ( n > 0 ? n*fact(n-1) : 1 );
    }

    long C( long n , long r )
    {
    return ( fact(n)/(fact(r)*fact(n-r)) );
    }

    bool isPrinted(int *a, long n)
    {
    bool is=true;
    for(long i=0;i<num;i++)
    {
    is=true;
    for(long j=0;j<n;j++)
    {
    if(a[j]!=m[i][j])
    {
    is=false;
    }
    }
    if(is)return true;
    }
    return false;
    }

    void print(int *a,long n)
    {
    int swap=0;
    for(long i=0;i<n;i++)
    {
    for(long j=i;j<n;j++)
    {
    if(a[j]<a[i])
    {
    swap=a[i];
    a[i]=a[j];
    a[j]=swap;
    }
    }
    }
    if(!isPrinted(a,n))
    {
    number++;
    cout<<number<<".{";
    for(long i=0;i<n;i++)
    {
    cout<<a[i];
    m[q][i]=a[i];
    if(i!=n-1)
    {
    cout<<",";
    }
    }
    q++;
    cout<<"}"<<endl;
    }
    }

    void printAll(int *a,int *b,long n,long k)
    {
    if(q<num)
    {
    if(k==1)
    {
    print(a,n);
    }
    if(k==0)
    {
    print(a,n);
    }
    else if(k>0)
    {
    int *c, *d;
    long p=0;
    for(long j=0;j<k;j++)
    {
    p=0;
    c=new int[k-1];
    for(long t=0;t<k;t++)
    {
    if(t!=j)
    {
    c[p]=b[t];
    p++;
    }
    }
    d=new int[n];
    for(long i=-1;i<n;i++)
    {
    for(long t=0;t<n;t++)
    {
    d[t]=a[t];
    }
    if(i!=-1)
    {
    d[i]=b[j];
    }
    printAll(d,c,n,k-1);
    }
    }
    delete c , d;
    }
    }
    }
    void subset (int *a,long n,long k){ int *b=new int[k];
    int *c=new int[n-k];
    for(long i=0;i<n;i++)
    {
    if(i<k)
    {
    b[i]=a[i];
    }
    else
    {
    c[n-i-1]=a[i];
    }
    }
    num=C(n,k);
    m=new int*[C(n,k)];
    for(long i=0;i<C(n,k);i++)
    {
    m[i]=new int[k];
    }
    printAll(b,c,k,n-k);
    delete a , b , c;
    for(int j=0;j<num;j++){
    cout<<"{" ;
    for(int s=0;s<k;s++){
    cout<<m[j][s]<<"," ;
    }
    cout<<"}";
    }}

    int main()
    {
    // time_t start , end;
    long n = 0 , k = 0,t=0;
    cout<<"Tedade ozv haye majmue:";
    cin>>n;
    cout<<"Tedade ozv haye zir majmue:";
    cin>>k>>t;
    cout<<"Ozv haye majmue ra vared konid:"<<endl;
    int *a=new int[n];
    for(long i=0;i<n;i++)
    {
    cin>>a[i];
    }
    cout<<"S={";
    for( long i = 0 ; i < n ; i++ )
    {
    cout<<a[i];
    if( i != n-1 )
    cout<<",";
    }
    cout<<"}"<<endl;
    num=C(n,k);
    subset(a,n,k);
    int **z;
    z=new int *[num];
    for(int j=0;j<num;j++){
    z[j]=new int[k];
    for(int s=0;s<k;s++){
    z[j][s]=m[j][s];
    }
    }
    int *b1;
    b1=new int [k];
    for(int j=0;j<k;j++){
    b1[j]=z[0][j];
    cout<<b1[j]<<"," ;
    cout<<"."<<endl; }
    subset(b1,num,t) ;
    delete b1,z;
    getch();
    return 0;
    }

  5. #5

    نقل قول: زیرمجموعه های k عضوی یک مجموعه n

    ممنون
    خودتون زحمت کشیدید
    میتونید کمک کنید؟؟

تاپیک های مشابه

  1. یافتن تعداد زیرمجموعه‌های یک مجموعه
    نوشته شده توسط solaris1091 در بخش الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها
    پاسخ: 6
    آخرین پست: یک شنبه 25 اسفند 1392, 01:14 صبح
  2. سوال: لود شدن زیرمجموعه های مرتبط با یک مجموعه
    نوشته شده توسط ahmadhasani در بخش ASP.NET Web Forms
    پاسخ: 15
    آخرین پست: یک شنبه 30 تیر 1392, 17:23 عصر
  3. زیر مجموعه های k عضوی
    نوشته شده توسط SYSMAN در بخش الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها
    پاسخ: 8
    آخرین پست: یک شنبه 30 خرداد 1389, 22:00 عصر
  4. سوال: زیرمجموعه های یک مجموعه
    نوشته شده توسط morrteza323 در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 5
    آخرین پست: شنبه 09 آبان 1388, 11:06 صبح
  5. پیدا کردن زیرمجموعه های یک فولدر
    نوشته شده توسط fazelm در بخش VB.NET
    پاسخ: 5
    آخرین پست: دوشنبه 02 شهریور 1388, 09:38 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •