blackhatgh
چهارشنبه 01 شهریور 1391, 03:40 صبح
یه توضیح در مورد الگوریتم Back Tacking میزارید یعنی کامل با طرز  استفاده. برای حل این بازی ها میخوام که یه مسیر درست رو باید پیدا کنیم  برای رسیدن به مقصد از تعدادی مسیر اگه پروژشو دارین بی ضحمت میشه بزارین  ممنون میشم.یا یه توضیحی بدین.:بوس::بوس::بوس:
hadi0x7c7
چهارشنبه 01 شهریور 1391, 11:54 صبح
بک ترک هیچ روش کللی و سیستماتیک نداره. باید اول با 8 وزیر شروع کنی بعد  که فول شدی بری سراغ مساله 4 رنگ بعد از اون هم knights tour . در کل باید  تمرین کنی .
در کل مثل DFS روی یک گراف هستش با این تفاوت که هر بار یه نود رو ویزیت  میکنی در دور های بعد هم اونو دوباره ویزیت میکنی. که این باعث میشه  پیچیدگی از چند جمله ای فراتر بره !
اینم یه نمونه 8 وزیر از کتاب Competetive Progeamming
/* 8 Queens Chess Problem */
#include <iostream>
#include <string.h>
#include <math.h>
using namespace std;
int row[9], TC, a, b, lineCounter; // it is ok to use global variables in competitive programming
bool place(int col, int tryrow) {
  for (int prev = 1; prev < col; prev++) // check previously placed queens
    if (row[prev] == tryrow || (abs(row[prev] - tryrow) == abs(prev - col)))
      return false; // an infeasible solution if share same row or same diagonal
  return true;
}
void backtrack(int col) {
  for (int tryrow = 1; tryrow <= 8; tryrow++) // try all possible row
    if (place(col, tryrow)) { // if can place a queen at this col and row...
      row[col] = tryrow; // put this queen in this col and row
      if (col == 8 && row[b] == a) { // a candidate solution & (a, b) has 1 queen
        printf("%2d      %d", ++lineCounter, row[1]);
        for (int j = 2; j <= 8; j++) printf(" %d", row[j]);
        printf("\n");
      }
      else
        backtrack(col + 1); // recursively try next column
    }   
}
int main() {
  scanf("%d", &TC);
  while (TC--) {
    scanf("%d %d", &a, &b);
    memset(row, 0, sizeof row); lineCounter = 0;
    printf("SOLN       COLUMN\n");
    printf(" #      1 2 3 4 5 6 7 8\n\n");
    backtrack(1); // generate all possible 8! candidate solutions
    if (TC) printf("\n");
  }
  return 0;
}
کتاب Programming Challenges هم یه وصل کامل به اون اختصاص داده.
مسعود اقدسی فام
چهارشنبه 01 شهریور 1391, 13:20 عصر
برای درک بهتر الگوریتم با حل معمای هشت وزیر  این پیوند رو بخونید:
http://www.algorithmha.ir (http://www.algorithmha.ir/post-%D9%85%D8%B9%D9%85%D8%A7%DB%8C-%D9%87%D8%B4%D8%AA-%D9%88%D8%B2%DB%8C%D8%B1.aspx)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.