مسائل في الخوارزميات

كل ما يتعلق بمادة الخوارزميات و بنى المعطيات 1 من استفسارات و مناقشات و محاضرات...........

المشرف: STEEV

مسائل في الخوارزميات

مشاركة غير مقروءةبواسطة feras alkasar » الخميس يناير 06, 2011 11:34 pm

مرحبا شبيبة التانية
بسبب أنو ما عنا محاضرات أو أي شي ندرس منو الخوارزميات
أنا لح حاول حط شوية ملاحظات ومسائل عن الخوارزميات
ما بعرف اذا لح أقدر كمل فيها أو لا بسبب ضيق الوقت
أنا لح حط كل جهدي
أي حدا بحب يساعدني بكون فضل يستلم موضوع ويحطلنا عليه ملخص
وبعدين مسائل وحلول
ملاحظة المسائل الموجودة تقبل نسبة الخطأ لأنها لح تكون حلي الي
بس ان شاء الله ما بخطأ
وجاهز لأي نقاش حول أي مسألة
صورة العضو الشخصية
feras alkasar
عضو فعال
عضو فعال
 
مشاركات: 662
اشترك في: الخميس أكتوبر 01, 2009 5:07 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة
الاختصاص: ذكاء صنعي

Re: دروس في الخوارزميات

مشاركة غير مقروءةبواسطة feras alkasar » الخميس يناير 06, 2011 11:45 pm

لح بلش بالتراجعية
التراجعية هي بالاساس عبارة عن خوارزمية عودية تحوي على شرط توقف وشرط لقبول الحل
لما منلاقي شرط التوقف غير محقق منتراجع عنو
ومن هون فكرة التراجعية
أهم شي بالتراجعية هو تحليل المسألة بالشكل الصحيح
واستخدام بنى معطيات تناسب المسألة وتسهل الحل
يفضل أغلب يلي منستخدمو من بنى معطيات ومتحولات نعتبرو global
بداية منعتمد على الشكل الرئيسي وبعدين ممكن نعدل عليه لنوصل لخوارزمية أفضل
بداية الشكل الرئيسي يلي مالقيت داعي لحفظو بس نفهم بعض الأفكار
1- اختبار الحل اذا كان مقبول وتسجيله
2- اختبار الحل اذا لم ينتهي للاستدعاء من جديد

الشكل الرئيسي
CODE: تحديد الكل
procedure try
repet
  اختر الخطوة
    اذا كانت مسموحة سجل
        خذ الخطوة التالية
        اذا كان لا يوجد حل تراجع عن الحل
until
صورة العضو الشخصية
feras alkasar
عضو فعال
عضو فعال
 
مشاركات: 662
اشترك في: الخميس أكتوبر 01, 2009 5:07 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة
الاختصاص: ذكاء صنعي

Re: دروس في الخوارزميات

مشاركة غير مقروءةبواسطة feras alkasar » الجمعة يناير 07, 2011 12:19 am

المسألة الأولى جولة الحصان
المسألة حلها الدكتور بالمحاضرة وبتعبر أسهل المسائل والأقرب الى الفهم موجودة بالكتاب صفحة 88
بعد استنتاج أنو لازم انحل المسألة بطريقة تراجعية
متل ما حكينا أول شي لازم نلاقي معطيات تناسب مسألتنا منشرحها وكل شغلة شو بتساوي
بعدين منكتب الخوارزمية
فكرة المسألة عنا حصان بدنا انحطو بأي مكان بالرقعة منحركو ضمن هي الرقعة لحتى يمشي على جميع المربعات من دون ما يمشي على المربع مرتين
اذا أول شي لح نساوي مصفوفة ثنائية أبعادها 8*8 بدل على رقعة الشطرنج
بكون عناصرها كلهون صفار بعدين كل ما يجي الحصان على مربع منحط بهاد المربع رقم الحركة
CODE: تحديد الكل
solution : array [1..8,1..8] of integer

تاني شي الحصان بيتحرك بشكل حرف L يعني بيتين أفقي أو عمودي بعدين بيت على اليمين أو اليسار
معناتها منساوي مصفوفة بتحوي على حركات الحصان المحتملة
CODE: تحديد الكل
move:array [1..2,1..8] of integer

x&y.png


هلأ أول شي قلنا اختيار الخطوة
نحن لح نمرق للاجرائية try
i هو الخطوة يلي نحن فيها
x دليل النقطة على المحور x
y دليل النقطة على المحور y
cond متول منطقي ليدل على الحل

اذا نحن منختار الخطوة بأنو مناخد احداثيات النقطة ومنعطيها الحركة الأولى الموجودة ضكن المصفوفة move
هلأ اختبار الحل اذا كان مسموح
هون لازم نعرف شو الشروط
أول شي لازم الحصان ما يطلع برات الرقعة معناتها لازم يكونو احداثيات المنطقة الجديدة أكبر أو يساوي الواحد وأصغر أو يساوي ال 8
تاني شي لازم ما يكون مرق على هالمربع قبل هالمرة
اذا كان الشرط مقبول لازم انسجل الحل

بعدين اختيار الخطوة القادة وهاد الشي بكون من خلال استدعاء التابع try من جديد
للحركة i+1 المنطقة الجديدة
هلأ اختبار الحل اذا رجعت الاجرائية true
بكون في حل
أما اذا رجعت false معناها لازم نتراجع عن الحل

مالح أتوسع بالشرح أكتر من هيك لأنها تقريبا مسألة سهلة
الجاية أصعب
وهي الخوارزمية
CODE: تحديد الكل
try (i,x,y,cond)
k=0
repet
   k=k+1
   u=x+mov[k]
   v=y+mov[k]
   if(0 =< u =< 8)&&(0 =< v =< 8)
      &&(solution[u,v]=0)
         solution[u,y]=i
         if(i<64)
            try(i+1,u,v,cond)
            if(not cond)
               solution[u,v]=0
         else
            cond=flase
until not cond or k=8

أي سؤال أنا جاهز بالتوفيق
ليس لديك الصلاحية لمشاهدة المرفقات
صورة العضو الشخصية
feras alkasar
عضو فعال
عضو فعال
 
مشاركات: 662
اشترك في: الخميس أكتوبر 01, 2009 5:07 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة
الاختصاص: ذكاء صنعي

Re: دروس في الخوارزميات

مشاركة غير مقروءةبواسطة feras alkasar » الجمعة يناير 07, 2011 12:45 am

مسألة الزواج المستقر
مستوى المسألة صعب شوي
موجودة بالكتاب صفحة 110 غير محلولة
عنا 8 رجال و 8 نساء
كل مين عندو قائمة بمين يفضل يتجوز لازم نعمل عملية زواج مستقر
بأنو اتزوج كل رجل لامرأة بحيث ما ينزوج رجل مع امرأة يكون الرجل بفضل امرأة تانية وهي الامرأة التانية بتفضلو على الزوج يلي تم اختياره
ملاحظة ممكن يكون في أكتر من حل بس نحن لح نوقف عند أول حل لأنو ما عنا معايير لاختيار الأفضل
واذا انوجدت هي المعايير بتكون المسألة حل أمثل
أنا لح صور الحل تصوير لأنو كتابتها شغلة طويلة :mrgreen:
0426.jpg

نفس الشي أي سؤال أنا جاهز
ليس لديك الصلاحية لمشاهدة المرفقات
صورة العضو الشخصية
feras alkasar
عضو فعال
عضو فعال
 
مشاركات: 662
اشترك في: الخميس أكتوبر 01, 2009 5:07 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة
الاختصاص: ذكاء صنعي

Re: دروس في الخوارزميات

مشاركة غير مقروءةبواسطة feras alkasar » الجمعة يناير 07, 2011 1:33 am

المتاهة
من أسهل الأسئلة بالخوارزميات ورغم هاد الشي الطلاب بيخافو منها
اذا كان عنا المتاهة التالية
123.PNG

في عنا أربع حركات بس
أصبح مننشأ المصفوفة move أبعادها 2 ب 4
بتحوي على الحركات الممكنة ويلي هي
x=1 y=0
x=0 y=1
x=-1 y=0
x=0 y=-1

ولح نعتبر المتاهة مخزنة ضمن المصفوفة MT أبعادها n*n
ومصفوفة الحل هي solution يلي كمان أبعادها n*n

CODE: تحديد الكل
try (i,x,y,cond)
k=0
repet
   k=k+1
   u=x+mov[k]
   v=y+mov[k]
   if(0 =< u =< n)&&(0 =< v =< n)
      &&(solution[u,v]=0) && (MT[u,v]=0)
         solution[u,y]=i
         if(u!=xout)&&(v!=yout)
            try(i+1,u,v,cond)
            if(cond)
               solution[u,v]=0
         else
            cond=false
until not cond or k=4
ليس لديك الصلاحية لمشاهدة المرفقات
صورة العضو الشخصية
feras alkasar
عضو فعال
عضو فعال
 
مشاركات: 662
اشترك في: الخميس أكتوبر 01, 2009 5:07 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة
الاختصاص: ذكاء صنعي

Re: دروس في الخوارزميات

مشاركة غير مقروءةبواسطة feras alkasar » الجمعة يناير 07, 2011 6:06 am

وداعا للسمانة التقليدية
مسألة دورة درجة الصعوبة عالية
ملاحظة : في بعض المسائل متل هي المسألة ومسألة الزواج المستقر الحل الموجود غير يلي حليناه بالعملي
هاد الحل بالنسبة الي أسهل وأقصر اضافة لأنو ما كنا انكمل الحل للأخير
فكرة المسألة
لدينا 4 أوزان وهي 1 و 3 و 9 و 27
بدنا انزين فيها أي وزن من الواحد وحتى 40
المطلوب كتاية خوارزمية ندخل وزن معين فتعطي كيفية توزيع الأوزان لموازنة الميزان

تحليل الخوارزمية
أول شي منساوي مصفوفة weight بتحوي على الأوزان
بعدين منعرف متحولين obt1 , obt2 تحوي على وزن كل كفة
المصفوفتين A , B ستحوي كل منهما على الأوزان الموضوعة في كل كفة

CODE: تحديد الكل
try(i,cond)
k=i-1
repet
   k=k-1
   if(obt1<obt2)&&(i!=-1)
      obt1=obt1+weight[k]
      A[i]=weight[k]
      try(k-1,cond)
      if(cond)
         obt1-=weight[k]
         A[i]=0
   if(obt1>obt2)&&(i!=-1)
      obt2=obt2+weight[k];
      B[i]=weight[k]
      try(k-1,cond)
      if(cond)
         obt2-=weight[k]
         B[i]=0
   if(obt1=obt2)
      cond=false
until(not cond or k<1)


وهي الكود مكتوب على ال ++C وجاهز للتنفيذ

CODE: تحديد الكل
#include <iostream>
using namespace::std;
int weight[]={1,3,9,27};
int obt1=0,obt2=0;
int A[4],B[4];
bool cond=true;
void try1(int i)
{
   int k=i+1;
   do{
   k--;
   if((obt1<obt2)&&(i!=-1))
   {
      obt1+=weight[k];
      A[i]=weight[k];
      try1(k-1);
      if(cond)
      {
         obt1-=weight[k];
         A[i]=0;
      }
   }
   if((obt1>obt2)&&(i!=-1))
   {
      obt2+=weight[k];
      B[i]=weight[k];
      try1(k-1);
      if(cond)
      {
         obt2-=weight[k];
         B[i]=0;
      }
   }
   if(obt1==obt2)
      cond=false;
   }while(cond && k>=1);
}
void main()
{
   int x;
   cin>>x;
   obt2=x;
   try1(3);
   for(int i=0;i!=4;i++)
      cout<<A[i]<<endl;
   for(int i=0;i!=4;i++)
      cout<<B[i]<<endl;
}
صورة العضو الشخصية
feras alkasar
عضو فعال
عضو فعال
 
مشاركات: 662
اشترك في: الخميس أكتوبر 01, 2009 5:07 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة
الاختصاص: ذكاء صنعي

Re: دروس في الخوارزميات

مشاركة غير مقروءةبواسطة feras alkasar » الجمعة يناير 07, 2011 1:23 pm

لعبة الحروف
سؤال دورة سابق مستوى الصعوبة متوسط عند معرفة الفكرة
لدينا تسعة حروف المطلوب ايجاد أطول كلمة ذات معنى موجودة بالقاموس
أول شي لما بتكون عنا الكلمة كيف بدنا نتأكد منها اذا موجودة بالقاموس
منفرض بأنو القاموس موجود وجاهز مشان هيك منكتب بالخوارزمية
CODE: تحديد الكل
if (word in Dictionary )

هاد الشرط كافي لفحص الكلمة
المشكلة بتكون كيف بدنا ندورعلى كافة الحالات بحيث عنا عاملي هون
فمثلا 9 حروف احتمالات الكلمات هو !9 ويلي بساوي 362880 كلمة
هلأ لح أفرض هي التوابع موجودة
طبعا لازم نكتبها بس هي توابع بديهية وبسيطة
cut منعطيه مصفوفة ودليل عنصر فيها وبعدها برد مصفوفة نفس المصفوفة المدخلة من دون هاد العنصر
past منعطيه مصفوفة وعنصر وبعد المصفوفة بيلصق العنصر بنهاية المصفوفة
أول شي let1 هنن الأحرف يلي عنا n بعد let1 يلي هو 9
let2 مصفوفة محارف فارغة m بعدها لح يكون صفر بالبداية
CODE: تحديد الكل
void GetBestWord (let1,n,let2,m)
   if(n=2)
      word1=let2+let1[1]+let1[2]
      word2=let2+let1[2]+let1[1]
      if(word1 in Dictionary)
         print word1
      if(word2 in Dictionary)
         print word2
   else
      for i=1 -> x
         past(let2,let1[i],m)
         GetBestWord(cut(let1,i,n),n-1,let2,m+1)


هلأ نحن من خلال الخوارزمية السابقة طبعنا جميع الكلمات يلي بتتكون من 9 أحرف وموجودة بالقاموس طبعا الاحرف يلي دخلهون المستخدم
أما اذا بدنا انطلع أطول كلمة صحيحة لأنو يمكن من خلال هال 9 أحرف ما يتشكل ولا كلمة
لذلك لازم نعمل شرط توقف لما يلاقي الكلمة
وتاني شي لازم اذا دار على كل الكلمات وما لقى كل الكلمات يرجع يستدعي التابع نفسو ل 8 أحرف وهكذا ....
طبعا ايمتى منعرف أنو دار على كل الكلمات
وقت منعمل عداد وبتوصل قيمتو ل 9 عاملي
هون بتكمن بعض أفكار التراجعية
بظن الكمالة صارت بسيطة مشان هيك مالح كملها
صورة العضو الشخصية
feras alkasar
عضو فعال
عضو فعال
 
مشاركات: 662
اشترك في: الخميس أكتوبر 01, 2009 5:07 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة
الاختصاص: ذكاء صنعي

Re: مسائل في الخوارزميات

مشاركة غير مقروءةبواسطة sema » الثلاثاء يناير 11, 2011 3:10 pm

هل انتهو المسائل ام ستقوم بتنزيل بقية المسائل لنتدرب على حلهم :???: :???:
اخيرااااااااااااااااااااااا تانية
صورة العضو الشخصية
sema
عضو فعال
عضو فعال
 
مشاركات: 349
اشترك في: الأربعاء نوفمبر 11, 2009 9:14 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثانية
الاختصاص: غير ذلك

Re: مسائل في الخوارزميات

مشاركة غير مقروءةبواسطة feras alkasar » الثلاثاء يناير 11, 2011 3:28 pm

sema كتب:هل انتهو المسائل ام ستقوم بتنزيل بقية المسائل لنتدرب على حلهم :???: :???:

ان شاء الله بس أرجع أدرس الخوارزميات برجع بحط المسائل يلي بحلها
صورة العضو الشخصية
feras alkasar
عضو فعال
عضو فعال
 
مشاركات: 662
اشترك في: الخميس أكتوبر 01, 2009 5:07 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة
الاختصاص: ذكاء صنعي

Re: مسائل في الخوارزميات

مشاركة غير مقروءةبواسطة MhdSyrwan » الثلاثاء يناير 11, 2011 5:02 pm

عندي سؤال :
هل أعطى الدكتور مسألة جولة الحصان أم لا (في النظري) ؟
لا حول ولا قوة إلا بالله


صورة العضو الشخصية
MhdSyrwan
عضو فعال
عضو فعال
 
مشاركات: 507
اشترك في: الأحد أكتوبر 04, 2009 11:28 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة

Re: مسائل في الخوارزميات

مشاركة غير مقروءةبواسطة feras alkasar » الثلاثاء يناير 11, 2011 5:06 pm

MHD كتب:عندي سؤال :
هل أعطى الدكتور مسألة جولة الحصان أم لا (في النظري) ؟

اي عطاها
صورة العضو الشخصية
feras alkasar
عضو فعال
عضو فعال
 
مشاركات: 662
اشترك في: الخميس أكتوبر 01, 2009 5:07 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة
الاختصاص: ذكاء صنعي

Re: مسائل في الخوارزميات

مشاركة غير مقروءةبواسطة MhdSyrwan » الثلاثاء يناير 11, 2011 8:11 pm

في مسألة قرأتها بأحد المواقع :
لدينا مجموعة من الأرقام نريد أن نقسم الأرقام إلى قسمين متساويين بالمجموع
مثال :
S={1,2,3,4}‎
S1={1,4}‎
S2={2,3}‎

ملاحظة ليس بالضرورة أن تكون المجموعتان الناتجتان لهما نفس عدد العناصر
لا حول ولا قوة إلا بالله


صورة العضو الشخصية
MhdSyrwan
عضو فعال
عضو فعال
 
مشاركات: 507
اشترك في: الأحد أكتوبر 04, 2009 11:28 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة

Re: مسائل في الخوارزميات

مشاركة غير مقروءةبواسطة feras alkasar » الثلاثاء يناير 11, 2011 8:24 pm

MHD كتب:في مسألة قرأتها بأحد المواقع :
لدينا مجموعة من الأرقام نريد أن نقسم الأرقام إلى قسمين متساويين بالمجموع
مثال :
S={1,2,3,4}‎
S1={1,4}‎
S2={2,3}‎

ملاحظة ليس بالضرورة أن تكون المجموعتان الناتجتان لهما نفس عدد العناصر

أنا حليتها بتحبو حط الحل
صورة العضو الشخصية
feras alkasar
عضو فعال
عضو فعال
 
مشاركات: 662
اشترك في: الخميس أكتوبر 01, 2009 5:07 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة
الاختصاص: ذكاء صنعي

Re: مسائل في الخوارزميات

مشاركة غير مقروءةبواسطة MhdSyrwan » الثلاثاء يناير 11, 2011 8:55 pm

feras alkasar كتب:
MHD كتب:في مسألة قرأتها بأحد المواقع :
لدينا مجموعة من الأرقام نريد أن نقسم الأرقام إلى قسمين متساويين بالمجموع
مثال :
S={1,2,3,4}‎
S1={1,4}‎
S2={2,3}‎

ملاحظة ليس بالضرورة أن تكون المجموعتان الناتجتان لهما نفس عدد العناصر

أنا حليتها بتحبو حط الحل

وأنا حليتها بس ما بعرف إذا لازم نحط الحلول وننافشها ولا نستنا الشباب
لا حول ولا قوة إلا بالله


صورة العضو الشخصية
MhdSyrwan
عضو فعال
عضو فعال
 
مشاركات: 507
اشترك في: الأحد أكتوبر 04, 2009 11:28 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة

Re: مسائل في الخوارزميات

مشاركة غير مقروءةبواسطة MhdSyrwan » الثلاثاء يناير 11, 2011 10:50 pm

feras alkasar كتب:
MHD كتب:في مسألة قرأتها بأحد المواقع :
لدينا مجموعة من الأرقام نريد أن نقسم الأرقام إلى قسمين متساويين بالمجموع
مثال :
S={1,2,3,4}‎
S1={1,4}‎
S2={2,3}‎

ملاحظة ليس بالضرورة أن تكون المجموعتان الناتجتان لهما نفس عدد العناصر

أنا حليتها بتحبو حط الحل

هات لنشوف نزل الحل
ولا نزل أنا بالأول :mrgreen:
حاسس حالي عم ألعب طرنيب
لا حول ولا قوة إلا بالله


صورة العضو الشخصية
MhdSyrwan
عضو فعال
عضو فعال
 
مشاركات: 507
اشترك في: الأحد أكتوبر 04, 2009 11:28 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة

Re: مسائل في الخوارزميات

مشاركة غير مقروءةبواسطة awsdib » الثلاثاء يناير 11, 2011 11:43 pm

مرحبا
هي مسألة صغيرة حاولت فيا بس ما زبطت معي
ازا حدا عندو الحل يا ريت ينزلو

untitled.JPG



و هي الكود تبعي
CODE: تحديد الكل
#include "iostream.h"

const int N[4]={1,2,3,4};
int A[4]={0,0,0,0};
const M=5;

void printA ()
{
   for (int i=0;i<4;i++)
      cout<<A[i]<<" , ";
};



void trys (int s,int i,int j)
{
   bool O=1;
   do
   {
      s+=N[i];
      if (s<=M)
      {
         A[j]=N[i]; j++;
         if (s==M)
            printA();
         else
            if (i<3)
            trys(s,i+1,j);
      }
      else{
         s-=N[i];
         if (i<=2)
         trys(s,i+1,j);         
         else{
            i=0; s=0;
            trys(s,i+1,j);
         }            
      }   
      
   }while (O);

   printA();
   cout<<endl;

};




void main ()
{
//   int s,i;
   trys(0,0,0);

}


عم يفوت بحلقات عججبة
ليس لديك الصلاحية لمشاهدة المرفقات

اجمل ما في الهندسة انك تبني جسرا من الامل على نهر من اليأس .
صورة العضو الشخصية
awsdib
عضو جديد
عضو جديد
 
مشاركات: 79
اشترك في: الثلاثاء أكتوبر 27, 2009 7:28 am
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثانية

Re: مسائل في الخوارزميات

مشاركة غير مقروءةبواسطة MhdSyrwan » الثلاثاء يناير 11, 2011 11:48 pm

MHD كتب:
feras alkasar كتب:
MHD كتب:في مسألة قرأتها بأحد المواقع :
لدينا مجموعة من الأرقام نريد أن نقسم الأرقام إلى قسمين متساويين بالمجموع
مثال :
S={1,2,3,4}‎
S1={1,4}‎
S2={2,3}‎

ملاحظة ليس بالضرورة أن تكون المجموعتان الناتجتان لهما نفس عدد العناصر

أنا حليتها بتحبو حط الحل

هات لنشوف نزل الحل
ولا نزل أنا بالأول :mrgreen:

رح نزل الخوارزمية(كود C++‎) :
CODE: تحديد الكل
const int n=5;
int a[n] = {1,2,3,4,5};
const int All = n*(n+1)/2;

bool Try(set<int> &res,int S,int i)
{
   bool q = false;
   int nS = S + a[i];
   if (2*nS <=All)
   {
      res.insert(a[i]);
      if (i<n-1)
      {
         q = Try(res,nS,i+1);
         if (!q)
         {
            res.erase(a[i]);
            q=Try(res,S,i+1);
         }
      }
      else if (i==n-1)
         if (2 * nS == All)
            return true;
         else
            return false;
   }
   return q;
}
void Solve()
{
   
   set<int> input;
   if ( Try(input,0,0) )
   {
      set<int>::iterator iter =input.begin();
      while (iter != input.end())
      {
         cout << *iter<<", ";
         iter++;
      }
   }
   else
      cout <<"no Solution !!";
   

   
   cin.get();
   
}
لا حول ولا قوة إلا بالله


صورة العضو الشخصية
MhdSyrwan
عضو فعال
عضو فعال
 
مشاركات: 507
اشترك في: الأحد أكتوبر 04, 2009 11:28 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة

Re: مسائل في الخوارزميات

مشاركة غير مقروءةبواسطة person » الأربعاء يناير 12, 2011 12:05 am

مرحبا شبيبة
بالمرفقات ... مسألتين -دورات مهمــة -
خلونا نتناقـش فيهـم
موفقين .. :ism:

image_2.rar
image_1.rar
ليس لديك الصلاحية لمشاهدة المرفقات
person
صورة العضو الشخصية
person
عضو فعال
عضو فعال
 
مشاركات: 335
اشترك في: الاثنين إبريل 06, 2009 12:17 am
الجتس: ذكر
الشهادة الثانوية: ....
الجامعة: ....
الكلية: ....
المرحلة الدراسية: غير ذلك
الاختصاص: غير ذلك

Re: مسائل في الخوارزميات

مشاركة غير مقروءةبواسطة person » الأربعاء يناير 12, 2011 12:17 am

awsdib كتب:مرحبا
هي مسألة صغيرة حاولت فيا بس ما زبطت معي
ازا حدا عندو الحل يا ريت ينزلو

untitled.JPG



و هي الكود تبعي
CODE: تحديد الكل
#include "iostream.h"

const int N[4]={1,2,3,4};
int A[4]={0,0,0,0};
const M=5;

void printA ()
{
   for (int i=0;i<4;i++)
      cout<<A[i]<<" , ";
};



void trys (int s,int i,int j)
{
   bool O=1;
   do
   {
      s+=N[i];
      if (s<=M)
      {
         A[j]=N[i]; j++;
         if (s==M)
            printA();
         else
            if (i<3)
            trys(s,i+1,j);
      }
      else{
         s-=N[i];
         if (i<=2)
         trys(s,i+1,j);         
         else{
            i=0; s=0;
            trys(s,i+1,j);
         }            
      }   
      
   }while (O);

   printA();
   cout<<endl;

};




void main ()
{
//   int s,i;
   trys(0,0,0);

}


عم يفوت بحلقات عججبة


اضغط هنا ...:)
:iok: :iok:
person
صورة العضو الشخصية
person
عضو فعال
عضو فعال
 
مشاركات: 335
اشترك في: الاثنين إبريل 06, 2009 12:17 am
الجتس: ذكر
الشهادة الثانوية: ....
الجامعة: ....
الكلية: ....
المرحلة الدراسية: غير ذلك
الاختصاص: غير ذلك

Re: مسائل في الخوارزميات

مشاركة غير مقروءةبواسطة feras alkasar » الأربعاء يناير 12, 2011 12:59 am

MHD كتب:
feras alkasar كتب:
MHD كتب:في مسألة قرأتها بأحد المواقع :
لدينا مجموعة من الأرقام نريد أن نقسم الأرقام إلى قسمين متساويين بالمجموع
مثال :
S={1,2,3,4}‎
S1={1,4}‎
S2={2,3}‎

ملاحظة ليس بالضرورة أن تكون المجموعتان الناتجتان لهما نفس عدد العناصر

أنا حليتها بتحبو حط الحل

هات لنشوف نزل الحل
ولا نزل أنا بالأول :mrgreen:
حاسس حالي عم ألعب طرنيب

ما شاء الله عليك أخي محمد حاللها ومخلصها
أنا والله كانت الفكرة ببالي بس مالي كاتبها خوارزمية وطالما أنت حليتها مالح قعد أكتبها
بس لح أحكيلك على الفكرة
لح نعرف متحول من النمط boolean خلينا انسميه مثلا T ومتحولين من النمط integer هنن مثلا obt1 , obt2
اذا كان T اخد قيمة true يضيف ل obt1 ويرجع يستدعي من جديد
اذا كان false يضيف ل obt2 ويرجع يستدعي من جديد
ومنحط شرط اذا صار obt1 بساوي obt2 منساوي متحول منطقي جديد مثلا cond بياخد false
هلأ لازم تحت كل استدعاء نفحص ال cond
اذا كان true منتراجع عن الخطوة ومنعكس ال T
وبهاد الشكل
صورة العضو الشخصية
feras alkasar
عضو فعال
عضو فعال
 
مشاركات: 662
اشترك في: الخميس أكتوبر 01, 2009 5:07 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة
الاختصاص: ذكاء صنعي

التالي

العودة إلى الخوارزميات و بنى المعطيات 1

الموجودون الآن

المستخدمون المتصفحون لهذا المنتدى: لا يوجد أعضاء مسجلين متصلين و 2 زائر/زوار

cron