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

نام تاپیک: الگوریتم چیدن 8 قلعه در صفحه شطرنج

  1. #1

    الگوریتم چیدن 8 قلعه در صفحه شطرنج

    سلام
    این الگوریتم انطوریه که می خواهیم 8 قلعه را در یک صفحه شطرنج طوری قرار بدهیم که همدیگر را تهدید نکنند باید این الگوریتم تمام حالات ممکن را در به وسیله ماتریس به خروجی منتقل کند

  2. #2
    سلام
    برای کی می خواهی من این برنامه را به زبان c دارم ولی باید خروجی اش را تغییر دهم .
    بگو برای کی می خواهی ؟

  3. #3
    لطف کنید به زبان c آن را بفرستید من هم لازم دارم با تشکر فراوان

  4. #4
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736
    نقل قول نوشته شده توسط cs_mania
    سلام
    این الگوریتم انطوریه که می خواهیم 8 قلعه را در یک صفحه شطرنج طوری قرار بدهیم که همدیگر را تهدید نکنند باید این الگوریتم تمام حالات ممکن را در به وسیله ماتریس به خروجی منتقل کند
    تمام ۴۰۳۲۰ نوع مختلف را به خروجی منتقل کند؟

  5. #5
    سلام این برنامه کلیه حالت ها را مختصاتشان را می دهد یعنی 8 مختصات در خروجی چاپ می کند که 8 قلعه می تونه قرار بگیرد .
    #include<stdio.h>
    #include<conio.h>
    #include<math.h>
    int Cross(int a,int b,int d){
    if (a==b || abs(a-b)==d)
    return 0;
    else
    return 1;
    }
    void main (void){
    int a,b,c,d,e,f,g,h,count=0;
    clrscr();
    for(a=1;a<=8;a++)
    for(b=1;b<=8;b++)
    if(Cross(a,b,1))
    for(c=1;c<=8;C++‎)
    if(Cross(c,b,1) && Cross(c,a,2))
    for(d=1;d<=8;d++)
    if(Cross(d,c,1) && Cross(d,b,2) && Cross(d,a,3))
    for(e=1;e<=8;e++)
    if(Cross(e,d,1) && Cross(e,c,2) && Cross(e,b,3) && Cross(e,a,4))
    for(f=1;f<=8;f++)
    if(Cross(f,e,1) && Cross(f,d,2) && Cross(f,c,3) && Cross(f,b,4) && Cross(f,a,5))
    for(g=1;g<=8;g++)
    if(Cross(g,f,1) && Cross(g,e,2) && Cross(g,d,3) && Cross(g,c,4) && Cross(g,b,5) && Cross(g,a,6))
    for(h=1;h<=8;h++)
    if(Cross(h,g,1) && Cross(h,f,2) && Cross(h,e,3) && Cross(h,d,4) && Cross(h,c,5) && Cross(h,b,6) && Cross(h,a,7)){
    count++;
    printf("%d,%d\n",1,a);
    printf("%d,%d\n",2,b);
    printf("%d,%d\n",3,c);
    printf("%d,%d\n",4,d);
    printf("%d,%d\n",5,e);
    printf("%d,%d\n",6,f);
    printf("%d,%d\n",7,g);
    printf("%d,%d\n\n",8,h);
    getch();
    }
    printf("%d",count);
    }

    در این برنامه 92 حالت است که قلعه ها می تونند قرار بگیرند .

  6. #6
    ممنون از جوابتون خیلی کمکم کرد
    اما یه سوال چه طوری میشه تمام حالات را بررسی کنه همین طور با recursive به صورت بازگشتی هم میشه نوشتش یا نه ؟

  7. #7
    نقل قول نوشته شده توسط cs_mania
    ممنون از جوابتون خیلی کمکم کرد
    اما یه سوال چه طوری میشه تمام حالات را بررسی کنه همین طور با recursive به صورت بازگشتی هم میشه نوشتش یا نه ؟
    سلام
    بله این برنامه را هم می توان به صورت بازگشتی نوشت .
    اما منظورت چیه که چه طوری می شه تمام حالات را بررسی کنه ؟ (یعنی توضیح برنامه ؟!)

  8. #8
    نه یعنی تمام !8 حالات را نشان بدهد چون در این حالت 92 تا بیشتر جواب نمیده

  9. #9
    نقل قول نوشته شده توسط cs_mania
    نه یعنی تمام !8 حالات را نشان بدهد چون در این حالت 92 تا بیشتر جواب نمیده
    سلام
    تمام !8 را ؟! من اولین باری است که می شنوم . لطفا توضیح بیشتر بدهید.

  10. #10
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736
    نقل قول نوشته شده توسط gm.sara
    سلام
    تمام !8 را ؟! من اولین باری است که می شنوم . لطفا توضیح بیشتر بدهید.
    ۴۰۳۲۰=!۸
    دفعه اوّل نیست که بیان شده، در پست قبلیم نوشته شده بود.
    رخها را باید طوری چید که در هر ردیف افقی و عمودی فقط یک رخ قرار داشته باشه.
     
    XOOOOOOO
    OXOOOOOO
    OOXOOOOO
    OOOXOOOO
    OOOOXOOO
    OOOOOXOO
    OOOOOOXO
    OOOOOOOX

    حالا این ۸ نوع را میشه در !۸ روش مختلف جایشان را با هم عوض کرد.

  11. #11
    سلام
    بابا اوون 92 مال یه چیز دیگه است :) 92 حالت مال 8 وزیره . این یکی فرق فوکوله. تعداد جوابهای 8 رخ 8! یا همون 40320 حالت میشه. سورس 8 وزیر که مثل زیبیل توی این انجمن ریخته و فقط خواجه حافظ شیرازی اوون رو بلد نیست. فقط کافیه توی همون برنامه 8 وزیر قسمت چک کردن تهدید قطری رو بردارید. چیزی که بدست میاد میشه برنامه 8 رخ.
    ممنون علی

  12. #12
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736
    منتها این سوال را خیل راحتر از ۸ وزیر میشه حل کرد، بر استفاده از recusion زیادی تاکید میشه، وقتش رسیده که یک روش تمیزتر و بهتر اراعه داده بشه،
    برنامه ۸ وزیر احتیاجی به recursion نداره، ولی همه مثل گوسفند عادت دارن که فقط از یک روش استفاده کنند.
    اینکه یک نفر سعی کرده به این سوال بدون استفاده از recursion جواب بده جایه تشویق داره.

  13. #13
    نقل قول نوشته شده توسط اَرژنگ
    منتها این سوال را خیل راحتر از ۸ وزیر میشه حل کرد، بر استفاده از recusion زیادی تاکید میشه، وقتش رسیده که یک روش تمیزتر و بهتر اراعه داده بشه،
    برنامه ۸ وزیر احتیاجی به recursion نداره، ولی همه مثل گوسفند عادت دارن که فقط از یک روش استفاده کنند.
    اینکه یک نفر سعی کرده به این سوال بدون استفاده از recursion جواب بده جایه تشویق داره.
    سلام
    من از شما ممنون هستم . بله من برنامه را با 8 وزیر اشتباه گرفته بودم الان متوجه اشتباهم شدم .دوست عزیزمان seyedof درست گفتند اگر قسمت چک تهدید قطری برداشته شود فکر می کنم برنامه کاملا درست می شود .
    و شما دوست عزیز منظورتان از recursion چیه ؟ ( همان recursive ؟!)
    راستی البته ببخشید اگر ناراحت نمی شوید : واژه گوسفند فکر کنم زیاد مناسب نباشد به هر حال تعهد ما این است که به کسی توهین نکنیم . (با معذرت فراوان )
    از راهنمایی تمام شما دوستان ممنون هستم .

  14. #14
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736
    نقل قول نوشته شده توسط gm.sara
    سلام
    من از شما ممنون هستم . بله من برنامه را با 8 وزیر اشتباه گرفته بودم الان متوجه اشتباهم شدم .دوست عزیزمان seyedof درست گفتند اگر قسمت چک تهدید قطری برداشته شود فکر می کنم برنامه کاملا درست می شود .
    و شما دوست عزیز منظورتان از recursion چیه ؟ ( همان recursive ؟!)
    راستی البته ببخشید اگر ناراحت نمی شوید : واژه گوسفند فکر کنم زیاد مناسب نباشد به هر حال تعهد ما این است که به کسی توهین نکنیم . (با معذرت فراوان )
    از راهنمایی تمام شما دوستان ممنون هستم .
    recusrion = برگشتی،
    recursiveِ = (صفت) برگشتنی.
    من از گوسفند برایه توهین استفاده نکردم، بیچاره گوسفند! همیشه از بقیه پیروی میکنه و آخرش هم ....
    من داشتم این بحث را تعقیب میکردم، جوابه استاندارد همانیه که مدیره بخش فمودند، و کاملاً هم درست هست، از نظره جوابی که نمره را میگره و ابداً هیچ حرفی درش نیست.
    ولی از نظره ابتکاری، جوابی که شما داشتین پیش میرفتین ، جوابی که کمتر کسی بهش فکر میکنه چه اینکه حتّا بخواد الگریتمش را بیان کند.
    روشهایی که از recursion استفاده میکنند ( یعنی recursiveِ هستند)، ساختمانی نیستند.
    ساده ترین مثال این گونه الگریتمها، permutation (ن تا جیز را در چند روش میشه جایاشان را با هم عوض کرد، مثال (ا،ب،ث)،(ا،ث،ب)،(ب،ا،ث)،(ب،ث ا)،(ث،ا،ب)،(ث،ب،ا) )، در تمام کتابهایه الگریتمی که دیدم فقط از روش بازگشتی استفاده میشه و حتّا به اینکه میشه این سوال را به روش iterative حل کرد هیچ اشاره‌ای نیست!
    یکی از برترییهایه روش iterative بر روش recursion اینه که جواب را در یک مرحله میده ولی recuriveِ باید تمام مرحله‌ها را تا مرحله اوّل پیش بره!

    در ضمن اگر کسی فکر میکه گوسفند بی‌احترامیه، اون گوسفند هم خودمم ( با عرض پوزش از گوسفند).
    آخرین ویرایش به وسیله اَرژنگ : دوشنبه 26 دی 1384 در 02:47 صبح

  15. #15
    نقل قول نوشته شده توسط اَرژنگ
    recusrion
    در ضمن اگر کسی فکر میکه گوسفند بی‌احترامیه، اون گوسفند هم خودمم ( با عرض پوزش از گوسفند).
    سلام
    من قصد بی احترامی نداشتم . اصلا حرفم را پس می گیرم شما من را متقاعد کردید . معذرت می خوام .
    در مورد برنامه ام توضیحی که باید بدهم اینه که این برنامه بیشتر به الگوریتم کار کمک می کنه فکرمی کنم کسی که نداند منظور سوال چیه با خواندن این برنامه متوجه شه که اصلا چه طوری باید فکر کرد ؟ مثل راه حل می ماند . درسته که برنامه خروجی می ده اسمن برنامه است ولی بیشتر شبیه الگوریتم کار است .
    ممنون از راهنمایی شما

  16. #16
    سلام
    خیلی از برنامه های بازگشتی رو میشه به روشهای تکراری یا iterative تبدیل کرد ولیکن در اکثر موارد که جواب بازگشتی بسیار کوتاه و مختصر است روش تکراری معادل آن پیچیده و طولاتر خواهد بود. البته روشهای بازگشتی مشکل overflow stack رو هم دارند.
    ممنون علی

  17. #17
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736
    نقل قول نوشته شده توسط gm.sara
    سلام
    درسته که برنامه خروجی می ده اسمن برنامه است ولی بیشتر شبیه الگوریتم کار است .
    پس همونطوریی که مدیر بخش فرمودند، الگریتم ۸ وزیر را تغییر بدید جوابتان را دارید.
    اینکه recursion نوشتن الگریتم را ساده‌تر میکند هم کاملاً درست هست.

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

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