StoneHaos

olimp

Jan 31st, 2020
141
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "stdafx.h"
  2. #include <string>
  3. #include <iostream>
  4. #include <queue>
  5. #include <utility>
  6. using namespace std;
  7. int n=8;
  8. int sqrn=n*n;
  9. int doska[8][8]={};
  10. int Dx[]={1,1,2,2,-1,-1,-2,-2};
  11. int Dy[]={-2,2,-1,1,-2,2,-1,1};
  12. bool q=false;
  13. int ii,jj,ik,jk,p,k,w;
  14.  
  15. void go(int i,int x, int y, bool &q){
  16.     int k=-1,p,s,ii;
  17.     bool q1=false;
  18.     if (q) exit;
  19.     while ((!q1)&&(k<8)) {
  20.         k++;
  21.         q1=false;
  22.         p=x+Dx[k];
  23.         s=y+Dy[k];
  24.         if((0<=p)&&(p<n)&&(0<=s)&&(s<n)&&(doska[p][s]==0)) {
  25.             doska[p][s]=i;
  26.             if (!(p==ik&&s==jk)) {
  27. //              cout<<i<<"  ";
  28.                 go(i+1,p,s,q1);
  29.                 if (!q1) doska[p][s]=0;
  30.             }
  31.             else {
  32.                 q1=true;
  33.             }
  34.         }
  35.     }
  36.     q=q1;
  37. //  for (int i=0;i<n;i++){
  38. //      cout<<endl;
  39. //  for (int j=0;j<n;j++) cout<<doska[i][j]<<' ';
  40. //  }
  41. //  cin>>ii;
  42. }
  43.  
  44. int main(){
  45.     queue<pair<int, int> > a;
  46.     string s;
  47.     cin>>s;
  48.     ii=s[0]-'A', jj=s[1]-'1';
  49.     cin>>s;
  50.     ik=s[0]-'A', jk=s[1]-'1';
  51.     cin>>s;
  52.     for (int i=0;i<s.size()/2;i++)doska[s[2*i]-'A'][s[2*i+1]-'1']=-1;
  53.     doska[ii][jj]=1;
  54.     a.push(pair<int, int>(ii, jj));
  55.     int i = 1;
  56.     bool boo = true;
  57.     while (!a.empty() && boo) {
  58.         ii=a.front().first;
  59.         jj=a.front().second;
  60.         a.pop();
  61.         for (int k=0;k<8;k++){
  62.             p=ii+Dx[k];
  63.             w=jj+Dy[k];
  64.             if (p
  65.             if((0<=p)&&(p<n)&&(0<=w)&&(w<n)&&(doska[p][w]==0)) {
  66.                 a.push(pair<int, int>(p, w));
  67.                 doska[p][w] = ++ i;
  68.             }
  69.         }
  70.     }
  71.     for (int i = 0; i < 8; ++ i) {
  72.         for (int j = 0; j < 8; ++ j) {
  73.             cout << doska[i][j] << " ";
  74.         }
  75.         cout << "\n";
  76.     }
  77.     return 0;
  78.  
  79.     for (int i=0;i<n;i++){
  80.         cout<<endl;
  81.     for (int j=0;j<n;j++) cout<<doska[i][j]<<' ';
  82.     }
  83. }
RAW Paste Data