Hướng dẫn giải của Quân mã


Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.

Ý tưởng làm bài

  • Input bài này khá nhỏ
  • Bài này chỉ cần duyệt hết tất cả vị trí trên bàn cờ vua, ô nào hợp lệ thì tăng đáp án lên là được

code

  • Chỉ việc lưu các vị trí có thể đi của quân mã (thông qua 2 mảng row, col)
  • Rồi duyệt tất cả nước đi
  • Nếu nước đi hợp lệ (nằm trong bàn cờ) thì đáp án tăng lên 1, ngược lại thì bỏ qua
#include <bits/stdc++.h>
using namespace std; 

int main() {
   ios_base::sync_with_stdio (0); cin.tie (0);

   #define int long long


   string s; cin >> s;

   map <char, int> m;
   string ss = "abcdefgh";
   for(int i=0; i<8; ++i){
      m[ss[i]]=i+1;
   }



   vector <int> row = {-2, -2, +2, +2, -1, -1, +1, +1};
   vector <int> col = {-1, +1, -1, +1, -2, +2, -2, +2};



   int cnt=0;
   for(int i=0; i<8; ++i){
      int r = m[s[0]];
      int c = s[1]-'0';

      r+=row[i];
      c+=col[i];
      if(r>=1 && r<=8 && c>=1 && c<=8){
         cnt+=1;
      }
   }


   cout <<cnt <<endl;












   return 0;
}


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.