输出全是‘*’,求调
查看原帖
输出全是‘*’,求调
1305985
Gordon1楼主2024/10/1 11:35
#include<bits/stdc++.h>
using namespace std;
int length;
char a[105][105];
int mark_y[10005][2];
bool ans[105][105];
int b[10][2]={{0,0},{1,0},{-1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}};
string c="yizhong";
int tmp_i;
void dfs(int x,int y,int n)
{
	for(int i=1;i<=8;++i)
	{
		if(n>6)
		{
			int o=1;
			int x=mark_y[tmp_i][0],y=mark_y[tmp_i][1];
			while(o<=7)
			{
				a[x][y]=1;
				x+=b[i][0];
				y+=b[i][1];
				o++;
			}
			return ;
		}
		int p=0;
		if(a[x][y]==c[n])
		{
			++n;
			dfs(x+b[i][0],y+b[i][1],n);
		}
		else
		{
			continue;
		}
	}
}
int main()
{
	cin>>length;
	int count=0;
	for(int i=1;i<=length;++i)
	{
		for(int j=1;j<=length;++j)
		{
			cin>>a[i][j];
			if(a[i][j]=='y')
			{
				count++;
				mark_y[count][0]=i;
				mark_y[count][1]=j;
			}
		}
	}
	for(int i=1;i<=count;++i)
	{
		tmp_i=i;
		dfs(mark_y[i][0],mark_y[i][1],0);
	}
	for(int i=1;i<=length;++i)
	{
		for(int j=1;j<=length;++j)
		{
			if(ans[i][j]==0)
			{
				cout<<'*';
			}
			else
			{
				cout<<a[i][j];
			}
		}
		cout<<endl;
	}
	return 0;
}

必关

2024/10/1 11:35
加载中...