(خوارزمية ايجاد جميع المجموعات الجزئية لمجموعة اعداد معطاة (الاعداد مختلفة
اولا : نضع الاعداد في المصفوفة الاحادبة int a[n]
ثانيا: نكون المصفوفة int b[n]
ثالثا : بما ان عدد المجموعات الجزئية يساوي 2 اس n فاننا نكون تكرارا من 1الى 2 اس n
for (i=1;i<=pow(2,n)-1;i++)
طبعا pow(2,i)-1 لان المجوعة الاولى هي المجموعة الخالية
ناخذ كل عدد من هذه الاعداد i و نحوله الى عدد ثنائي ونخزن العدد الثنائي الناتج في المصفوفة b
j=i;
m=0;
while(j>0)
{
b[m]= j % 2;
j=j/2;
m=m+1;
}الان نقوم باختبار جميع عناصر المصفوفة b فاذا قيمة عن قيمة العنصر>0 b[j] فاننا نقوم باخراج العنصر a[j] من
المصفوفة من المصفوفة a
For(j=0;j<n;j++)
If (b[j]>0)
{
printf(“%d”,a[j]);
}رابعا : الانتقال الى سطر جديد
printf(“\n”);
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main()
{
int i,j,m;
int const n=3;
int a[n]={1,2,3},b[n]={0};
clrscr();
for(i=1;i<pow(2,n)-1;i++)
{
m=0;
j=i;
while(j>0)
{
b[m]= j % 2;
j=j/2;
m=m+1;
}//end of while
for(j=0;j<n;j++)
If (b[j]>0)
printf(“%d ”,a[j]);
printf(“\n”);
}// end of for i;
getch();
}// end of mainخوارزمية ايجاد جميع المجموعات الجزئية لمجموعة اعداد معطاة.doc