社区讨论

个人检查没问题啊?为啥全wa

P1101单词方阵参与者 3已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@lyy641dx
此快照首次捕获于
2024/07/23 16:42
2 年前
此快照最后确认于
2024/07/23 18:12
2 年前
查看原帖

急救在线等!

CPP
#include<stdio.h>
int dx[8]={0,1,1,1,0,-1,-1,-1};
int dy[8]={1,1,0,-1,-1,-1,0,1};
int n,adfs[1000][1000],f[1000][1000],f2[9],f3[9];
char e;
void dfs(int x,int y,int l,int sum){
	if(l==1){
		for(int i=0;i<8;i++){
			if(adfs[x+dx[i]][y+dy[i]]==2){
				f2[1]=x;
				f3[1]=y;
				dfs(x+dx[i],y+dy[i],2,i);
			}
		}
		return;
	}
	if(l>1&&l<7){
		int xx=x+dx[sum],yy=y+dy[sum];
		if(adfs[xx][yy]==l+1){
			f2[l]=x;
			f3[l]=y;
			dfs(xx,yy,l+1,sum);
		} 
	}
	if(l==7){
		if(adfs[x][y]==7){
			for(int i=1;i<=7;i++) f[f2[i]][f3[i]]=1;
		}
	}
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			scanf(" %c",&e);
			if(e=='y') adfs[i][j]=1;
			else if(e=='i') adfs[i][j]=2;
			else if(e=='z') adfs[i][j]=3;
			else if(e=='h') adfs[i][j]=4;
			else if(e=='o') adfs[i][j]=5;
			else if(e=='n') adfs[i][j]=6;
			else if(e=='g') adfs[i][j]=7;
			else adfs[i][j]=0;
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(adfs[i][j]==1) dfs(i,j,1,0);
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(f[i][j]==0) printf("*");
			else if(f[i][j]==1){
				if(adfs[i][j]=1) printf("y");
				else if(adfs[i][j]=2) printf("i");
				else if(adfs[i][j]=3) printf("z");
				else if(adfs[i][j]=4) printf("h");
				else if(adfs[i][j]=5) printf("o");
				else if(adfs[i][j]=6) printf("n");
				else if(adfs[i][j]=7) printf("g");
			}
		}
		printf("\n");
	}
	return 0;
} 

回复

3 条回复,欢迎继续交流。

正在加载回复...