Chess

原创 2016年08月28日 15:20:48

链接:http://codeforces.com/problemset/problem/38/B

题目:

Two chess pieces, a rook and a knight, stand on a standard chessboard 8 × 8 in size. The positions in which they are situated are known. It is guaranteed that none of them beats the other one.

Your task is to find the number of ways to place another knight on the board so that none of the three pieces on the board beat another one. A new piece can only be placed on an empty square.

题意:8*8棋盘,有一个马一个车,求再放一个马有多少种方法。

分析:数据很小,暴力把不可能的点去掉即可。注意放第二个马的时候不能踩到车。

看自己之前写的代码好蠢,这里马的8个走位可以用数组表示,类似bfs统一用一条语句判断越界,其他文章可能会有提到。

题解:

#include<iostream>
using namespace std;

bool board[10][10];

void killrook(int m,int n)
{
	for(int i=0;i<8;i++)
	{
		board[m][i]=board[i][n]=true;
	}
}
void killknight(int m,int n)
{
	board[m][n]=true;
	if(m-2>=0)
	{
		if(n-1>=0)
			board[m-2][n-1]=true;
		if(n+1<8)
			board[m-2][n+1]=true;
	}
	if(m+2<8)
	{
		if(n-1>=0)
			board[m+2][n-1]=true;
		if(n+1<8)
			board[m+2][n+1]=true;
	}
	if(n-2>=0)
	{
		if(m-1>=0)
			board[m-1][n-2]=true;
		if(m+1<8)
			board[m+1][n-2]=true;
	}
	if(n+2<8)
	{
		if(m-1>=0)
			board[m-1][n+2]=true;
		if(m+1<8)
			board[m+1][n+2]=true;
	}
}
int main()
{
	//freopen("in.txt","r",stdin);
	char c;
	int i;
	while(~scanf("%c%d",&c,&i))
	{
		int ans=0;
		memset(board,0,sizeof(board));
		killrook(i-1,c-'a');
		killknight(i-1,c-'a');
		getchar();
		scanf("%c%d",&c,&i);
		getchar();
		killknight(i-1,c-'a');
		for(int j=0;j<8;j++)
			for(int k=0;k<8;k++)
			{
				if(board[j][k]==false)
					ans++;
			}
		printf("%d\n",ans);
	}
	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

Chess

Description Two chess pieces, a rook and a knight, stand on a standard chessboard 8 × 8 in size. Th...
  • unusualnow
  • unusualnow
  • 2015年11月15日 10:47
  • 214

CodeForces 38B Chess

B. Chess time limit per test 2 seconds memory limit per test 256 megabytes input standar...
  • geekdoe
  • geekdoe
  • 2016年02月23日 20:58
  • 208

寒假训练——POJ - 2488 A Knight's Journey 搜索+贪心

Background  The knight is getting bored of seeing the same black and white squares again and again ...
  • chudongfang2015
  • chudongfang2015
  • 2017年01月18日 20:01
  • 98

Uvaoj10422-Knight in FEN(细节+重点)

Uvaoj 10422       There are black and white knights on a 5 by 5 chessboard. There are twelve of eac...
  • sinat_26019265
  • sinat_26019265
  • 2016年02月14日 12:24
  • 164

Knight's Trip 马在无线大棋盘上跳到指定点最小步数问题

题目描述 Problem D: Knight's Trip In chess, each move of a knight consists of moving by two squares h...
  • a120705230
  • a120705230
  • 2014年12月09日 13:23
  • 1124

N后问题 Java版

/* //* * N皇后问题Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)...
  • newmemory
  • newmemory
  • 2015年12月07日 21:11
  • 438

UVA难度列表

# ID Title Solved by Difficulty 1 100 The 3n + 1 problem 26485 1 ...
  • t_tmj
  • t_tmj
  • 2015年07月28日 20:26
  • 1002

UVA639 递归+回溯

1 题意:给出一张地图, 'X'是墙,'.'是可放的位置,求棋盘上最多放多少个车(中国象棋)。 2 分析:回溯 注意:在进入下一层的判断,如果符合某个约束条件,则进入下一层第一个递归实例,不符合或...
  • a272846945
  • a272846945
  • 2016年11月06日 11:09
  • 72

Hihocoder 1424 Asa's Chess Problem (有源汇上下界最小费用流)

ProblemAsa comes up with a chess problem. There are N×N chesses on a board with N×N grids, one chess...
  • DorMOUSENone
  • DorMOUSENone
  • 2017年07月17日 12:55
  • 1070

noip2010 引水入城 (bfs染色+贪心)

P1777引水入城 Accepted 标签:动态规划NOIP提高组2010 描述 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧...
  • yuyanggo
  • yuyanggo
  • 2015年09月27日 16:50
  • 621
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Chess
举报原因:
原因补充:

(最多只允许输入30个字)