大佬求调!
  • 板块题目总版
  • 楼主Zikake
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/2/14 19:05
  • 上次更新2023/10/24 00:48:17
查看原帖
大佬求调!
525146
Zikake楼主2023/2/14 19:05

rt

我的代码连TJ里样例也AC了 就是第一个样例错了

#include<bits/stdc++.h>
#define int long long
using namespace std;
int T,num,uo;
char a[15][15];
bool vis[15][15];
bool f[15][15];
queue< pair<int,int> >q; 
int fx[10]={-1,1,0,0};
int fy[10]={0,0,-1,1};
int Flag(int x,int y){
	if(x>=0&&x<9&&y>=0&&y<9){
		return 1;
	}
	else{
		return 0;
	}
}
int bfs(int sx,int sy){
//	memset(vis,0,sizeof vis);
	num=0;
	vis[sx][sy]=1;
	q.push(make_pair(sx,sy));
	while(!q.empty()){
		int r=q.front().first;
		int c=q.front().second;
		q.pop();
		for(int i=0;i<=3;i++){
			int dx=r+fx[i];
			int dy=c+fy[i];
			if(!Flag(dx,dy)){
				continue;
			}
			if(!f[dx][dy]&&a[dx][dy]=='.'){
				f[dx][dy]=1;
				num++;
			}
			else if(!vis[dx][dy]&&a[dx][dy]=='o'){
				vis[dx][dy]=1;
				q.push(make_pair(dx,dy));
			}
		}
	}
	return num;
}
main(){
	scanf("%lld",&T);
	while(T--){
		sizeof(vis,0,sizeof vis);
		for(int i=0;i<9;i++){
			for(int j=0;j<9;j++){
				scanf("%c",&a[i][j]);
			}
		}
		bool flag=false;
		for(int i=0;i<9;i++){
			for(int j=0;j<9;j++){
				if(a[i][j]=='o'&&!vis[i][j]){
						memset(f,false,sizeof(f));
						if(bfs(i,j)==1){
						flag=true;
						break;
					}
				}
			}
			if(flag==1)break;
		}
		if(flag){
			printf("Case #%lld: Can kill in one move!!!\n",++uo);
		}
		else{
			printf("Case #%lld: Can not kill in one move!!!\n",++uo);
		}
	}	
	return 0;
}
2023/2/14 19:05
加载中...