怎么找都找不出问题
查看原帖
怎么找都找不出问题
262557
plane_Su楼主2020/7/5 13:53

……

调试了n次了都

#include<bits/stdc++.h>
using namespace std;
char w[8]={' ','y','i','z','h','o','n','g'};
char m1[101][101],m2[101][101];
int n,dx[8]={0,1,1,1,0,-1,-1,-1},dy[8]={-1,-1,0,1,1,1,0,-1},k=-1;
void dfs(int x,int y,int step)
{
	if(step==1)
	{
		for(int i=0;i<8;i++)
		{
			int nx=x+dx[i];
			int ny=y+dy[i];
			
			if(m1[x][y]==w[step]&&m1[nx][ny]==w[step+1]&&nx>=1&&nx<=n&&ny>=1&&ny<=n)
			{
				k=i;
				m2[x][y]=w[step];
//				m2[nx][ny]=w[step+1];
				dfs(nx,ny,step+1);
				m2[x][y]='*';
//				m2[nx][ny]='*';
				k=-1;
			}
			else
			{
				return;
			}
		}
	}
	if(step>=2&&step<=7)
	{
		int nx=x+dx[k];
		int ny=y+dy[k];
		if(x>=1&&x<=n&&y>=1&&y<=n&&m1[x][y]==w[step])
		{
			m2[x][y]=w[step];
			dfs(nx,ny,step+1);
			m2[x][y]='*';
		}
		else
		{
			return;
		}
	}
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			m2[i][j]='*';
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			cin>>m1[i][j];
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			dfs(i,j,1);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
			cout<<m2[i][j];
		cout<<endl;
	}
	return 0;
}
2020/7/5 13:53
加载中...