样例过,但是全WA,下载数据第一组明明也是对的,但是他判错
查看原帖
样例过,但是全WA,下载数据第一组明明也是对的,但是他判错
357131
gosgosgoy楼主2022/10/9 12:07

他说我第一行第二列 读到 的是*而非y,但是我确实答案是y啊,有空的大佬可以复制我的代码到编译器跑一下,试一下他的样例,球球了 orz

#include<cstdio>
#include<iostream>
#include<queue>
using namespace std;
int dx[9]={0,-1,-1,-1,0,1,1,1,0};
int dy[9]={0,-1,0,1,1,1,0,-1,-1};
int usedx[8];
int usedy[8];
char an[8]={'1','y','i','z','h','o','n','g'};
int n;
char map[101][101];
char newmap[101][101];
struct starty{
	int xi;
	int yi;
}they[100001];
int kx,ky;
int num=0;
void dfs(int xi,int yi,int step,int d){
	if(step==7){
		for(int i=1;i<=7;i++){
			newmap[usedx[i]][usedy[i]]=an[i];
			}
		return ;
	}
	int i=d;
		kx=xi+dx[i];
		ky=yi+dy[i];
		if(kx>=1&&kx<=n&&ky>=1&&ky<=n&&map[kx][ky]==an[step+1]){
			usedx[step+1]=kx;
			usedy[step+1]=ky;
			dfs(kx,ky,step+1,d);}
	
}
int main(){
	
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			newmap[i][j]='*';
			scanf("%c",&map[i][j]);
			while(map[i][j]=='\n')
				scanf("%c",&map[i][j]);
		if(map[i][j]=='y'){
			num++;
			they[num].xi=i;
			they[num].yi=j;
		}
			}
	}
	for(int i=1;i<=num;i++){
		usedx[1]=they[i].xi;
		usedy[1]=they[i].yi;
		for(int j=1;j<=8;j++)
		dfs(they[i].xi,they[i].yi,1,j);
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++)
			printf("%c",newmap[i][j]);
		printf("\n");
	}
	return 0;
}

2022/10/9 12:07
加载中...