Download presentation
Presentation is loading. Please wait.
1
მხედრით საჭადრაკო დაფის შემოვლის ამოცანა
მოცემულია საჭადრაკო დაფა და მხედარი შესაძლებელია თუ არა მხედრით დაფის ყველა უჯრის შემოვლა ისე, რომ თითოეულ უჯრაზე მხოლოდ ერთხელ მოხვდეს?
2
მხედრით საჭადრაკო დაფის შემოვლის ამოცანა
1 2 3 4 5 6 7 8 მხედრის 8 შესაძლო სვლა გადავნომროთ საათის ისრის მოძრაობის მიმართულებით
3
მხედრით საჭადრაკო დაფის შემოვლის ამოცანა
1 3 სვლას ვუწოდოთ შესაძლებელი, თუკი ის არ გადის დაფის გარეთ და არ მიჰყავს მხედარი უკვე განვლილ უჯრაზე. ყოველი უჯრიდან კეთდება შესაძლებელ სვლებს შორის უმცირესი ნომრის მქონე. 2 4
4
მხედრით საჭადრაკო დაფის შემოვლის ამოცანა
1 34 3 36 19 22 მხედარი 42-ე სვლის ჩათვლით რვა შესაძლოდან ერთ-ერთს ყოველთვის გააკეთებს, ხოლო 43-ე სვლის გასაკეთებლად უჯრას ვეღარ იპოვის (პირველი 5 სვლა დაფის გარეთ გადის, ხოლო ბოლო სამი სვლიდან მიღწევად უჯრებზე უკვე ნამყოფია მე-9, მე-15 და 41-ე სვლებზე). სწორედ აქ ხორციელდება უკან დაბრუნება – 42-ე სვლა უქმდება და განიხილება 41-ე სვლაზე მიღწეული უჯრიდან 42-ე სვლის გაკეთების სხვა შესაძლებლობა რიგის მიხედვით. 2 37 20 23 4 17 33 35 18 21 10 38 24 11 16 5 32 39 26 9 12 25 15 6 27 31 40 29 13 42 8 30 14 41 28 7
5
მხედრით საჭადრაკო დაფის შემოვლის ამოცანა
1 38 55 34 3 36 19 22 54 47 2 37 20 23 4 17 39 56 33 46 35 18 21 10 48 53 40 57 24 11 16 5 59 32 45 52 41 26 9 12 44 49 58 25 62 15 6 27 31 60 51 42 29 8 13 64 50 43 30 61 14 63 28 7 პირველი ამოხსნა, რომელიც მიიღება სვლების ისეთი თანმიმდევრობით გადანომვრისას, როგორც ეს ზემოთაა ნაჩვენები და მოძრაობის (1,1) უჯრიდან დაწყებისას.
6
მხედრით საჭადრაკო დაფის შემოვლის ამოცანა
ერთ-ერთი ამონახსნი შესაბამისი გრაფიკული გამოსახულებით
7
მხედრით საჭადრაკო დაფის შემოვლის ამოცანა
. მხედრის ამოცანა სხვა ზომის დაფებისათვის
8
მხედრით საჭადრაკო დაფის შემოვლის ამოცანა
1 2 3 4 5 6 7 8 9 10 11 -1
9
მხედრით საჭადრაკო დაფის შემოვლის ამოცანა
#include <iostream> int c[8][2]={-2,1, -1,2, 1,2, 2,1, 2,-1, 1,-2, -1,-2, -2,-1}; int i1,j1,n; int d[12][12]; void mxedari(int i,int j,int n) { int k; if (n>=64) { for (i1=2; i1<=9; i1++){ for (j1=2; j1<=9; j1++){ printf ("%4d",d[i1][j1]);} printf ("\n");} system("PAUSE");} k=-1; while (k<8) { k++; if (k>=8) break; if (d[i+c[k][0]][j+c[k][1]]==0) d[i+c[k][0]][j+c[k][1]]=n+1; else continue; mxedari (i+c[k][0],j+c[k][1],n+1); } d[i][j]=0; n=n-1; main() { for (i1=0; i1<=11; i1++) for (j1=0; j1<=11; j1++) d[i1][j1]=-1; for (i1=2; i1<=9; i1++) for (j1=2; j1<=9; j1++) d[i1][j1]=0; d[2][2]=1; mxedari (2,2,1); } But each new placement must be checked for potential conflicts with the previous queen. If there is a conflict, then the newly-placed queen is shifted rightward.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.