一些问题
查看原帖
一些问题
850498
__erinww楼主2023/4/24 18:11

又是玄学WA————

50分代码:

#include <stdio.h>
#include <queue>

#define MAXN 128

using std::queue;

struct edge{
	int x,y;
};

int n,m,STEP;
signed dx[] = {-1,1,-1,0,1,1,0,-1};
signed dy[] = {0,0,-1,-1,-1,1,1,1};
char map[MAXN][MAXN];
queue<edge> q;

void BFS(int x,int y){
	STEP ++;
	map[x][y] = '.';
	q.push((edge){
		x,y
	});
	
	while(!q.empty()){
		edge wx = q.front();
		q.pop();
		for(int i = 0;i < 8;i ++){
			int nx = wx.x+dx[i];
			int ny = wx.y+dy[i];
			if(nx > -1 && ny > -1 && nx < n && ny < m && map[nx][ny] == 'W'){
				map[nx][ny] = '.';
				q.push((edge){
					nx,ny
				});
			}
		}
	}
	
	return ;
}

signed main(){
	scanf("%d%d",&n,&m);
	
	for(int i = 0;i < n;i ++)
		gets(map[i]);
	
	for(int i = 0;i < n;i ++)
		for(int j = 0;j < m;j ++)
			if(map[i][j] == 'W')
				BFS(i,j);
	
	printf("%d\n",STEP);
	
	return 0;
}

100 分代码:

#include <iostream>
#include <queue>

#define MAXN 128

using std::queue;
using std::cin;

struct edge{
	int x,y;
};

int n,m,STEP;
signed dx[] = {-1,1,-1,0,1,1,0,-1};
signed dy[] = {0,0,-1,-1,-1,1,1,1};
char map[MAXN][MAXN];
queue<edge> q;

void BFS(int x,int y){
	STEP ++;
	map[x][y] = '.';
	q.push((edge){
		x,y
	});
	
	while(!q.empty()){
		edge wx = q.front();
		q.pop();
		for(int i = 0;i < 8;i ++){
			int nx = wx.x+dx[i];
			int ny = wx.y+dy[i];
			if(nx > -1 && ny > -1 && nx < n && ny < m && map[nx][ny] == 'W'){
				map[nx][ny] = '.';
				q.push((edge){
					nx,ny
				});
			}
		}
	}
	
	return ;
}

signed main(){
	scanf("%d%d",&n,&m);
	char awa;
	for(int i = 0;i < n;i ++)
		for(int j = 0;j < m;j ++)
			cin >> awa,map[i][j] = awa;
	
	for(int i = 0;i < n;i ++)
		for(int j = 0;j < m;j ++)
			if(map[i][j] == 'W')
				BFS(i,j);
	
	printf("%d\n",STEP);
	
	return 0;
}

为什么会这样呢?一个WA一个AC

2023/4/24 18:11
加载中...