1197. Lonesome Knight
Time limit: 1.0 secondMemory limit: 64 MB
The statement of this problem is very simple: you are to determine how many squares of the chessboard can be attacked by a knight standing alone on the board. Recall that a knight moves two squares forward (horizontally or vertically in any direction) and then one square sideways (perpedicularly to the first direction).
Input
The first line contains the numberNof test cases, 1 ≤N≤ 100. Each of the followingNlines contains a test: two characters. The first character is a lowercase English letter from ‘a’ to ‘h’ and the second character is an integer from 1 to 8; they specify the rank and file of the square at which the knight is standing.
Output
OutputNlines. Each line should contain the number of the squares of the chessboard that are under attack by the knight.
Sample
inputoutput
3a1d4g6286
骑士走两个方格组成的大矩形的对角线,,问从当前位置出发有多少个方向可以走
注意边界就可以
#include<cstdio>#include<iostream>using namespace std;int knight(int m,int n){int num=0;if(m-1>=1){if(n-2>=1) num++;if(n+2<=8) num++;}if(m+1<=8){if(n-2>=1) num++;if(n+2<=8) num++;}if(m+2<=8){if(n+1<=8) num++;if(n-1>=1) num++;}if(m-2>=1){if(n+1<=8) num++;if(n-1>=1) num++;}return num;}int main(){int n,b;char a;while(cin>>n){for(int i=0;i<n;i++){cin>>a>>b;printf("%d\n",knight(a-'a'+1,b));}}return 0;}
福报不够的人,就会常常听到是非;