【JZOJ】【dfs】LAGNO

題意

有一個888∗8的棋盤,上面有白棋和黑棋,.“.”代表沒有棋子,B"“B"代表黑棋(BlackBlack),W“W”代表白棋(WhiteWhite
被黑棋夾在中間的白棋會變黑棋,然後更新白棋的黑棋就不能再更新其他白棋,求下一步棋子後,最多能吃多少白棋

樣例

輸入

........
........
........
...BW...
...WB...
........
........
........

輸出

1

思路

dfsdfs,枚舉每一個空點,判斷這個與這個空點相連的白子

代碼

#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
int dx[9]={0,1,-1,1,1,-1,0,0,-1};
int dy[9]={0,1,1,-1,0,0,-1,1,-1};
int maxx,ans,sum;
char t[11][11]; 
int dfs(int c,int x,int y)
{
	if (x<1 || x>8 || y<1 || y>8 || t[x][y]=='.') return -1e9;//判斷出界
	if (t[x][y]=='B') return 0;//找不到相對點
	return dfs(c,x+dx[c],y+dy[c])+1;//繼續搜
}
int main()
{
	for (int i=1; i<=8; ++i)
	 for (int j=1; j<=8; ++j)
	  cin>>t[i][j];
	for (int i=1; i<=8; ++i)
	 for (int j=1; j<=8; ++j)
	  {
	   for (int k=1; k<=8; ++k)
	  	if (t[i][j]=='.') 
	  	{
		   int sum=dfs(k,i+dx[k],j+dy[k]);//找相對點
	      if (sum>0) ans+=sum;
		}
		maxx=max(maxx,ans),ans=0;//記錄最大值
	  }
	printf("%d",maxx);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章