求助,一直死循环
查看原帖
求助,一直死循环
225301
大珂学家楼主2021/12/25 17:37
#include<bits/stdc++.h>
using namespace std;
int a[401][401];
int f1(int m,int n,int x,int y,int c,int b)
{
	a[x][y]=0;
	if(x+3<=m&&y+1<=n)
	{
		if(a[c+3][b+1]<a[c][b]+1||a[c+3][b+1]!=-1)
		{
			return a[c][b]+1;
		}
		else
		{
			return a[c+3][b+1];
		}
	}
}
int f2(int m,int n,int x,int y,int c,int b)
{
	a[x][y]=0;
	if(x-3<=m&&y+1<=n)
	{
		if(a[c-3][b+1]<a[c][b]+1||a[c-3][b+1]!=-1)
		{
			return a[c][b]+1;
		}
		else
		{
			return a[c-3][b+1];
		}
	}
	
}
int f3(int m,int n,int x,int y,int c,int b)
{
	a[x][y]=0;
	if(x+3<=m&&y-1<=n)
	{
		if(a[c+3][b-1]<a[c][b]+1||a[c+3][b-1]!=-1)
		{
			return a[c][b]+1;
		}
		else
		{
			return a[c+3][b-1];
		}
	}
	
}
int f4(int m,int n,int x,int y,int c,int b)
{
	a[x][y]=0;
	if(x-3<=m&&y-1<=n)
	{
		if(a[c-3][b-1]<a[c][b]+1||a[c-3][b-1]!=-1)
		{
			return a[c][b]+1;
		}
		else
		{
			return a[c-3][b-1];
		}
	}
	
}
int f5(int m,int n,int x,int y,int c,int b)
{
	a[x][y]=0;
	if(x+1<=m&&y+3<=n)
	{
		if(a[c+1][b+3]<a[c][b]+1||a[c+1][b+3]!=-1)
		{
			return a[c][b]+1;
		}
		else
		{
			return a[c+1][b+3];
		}
	}
	
}
int f6(int m,int n,int x,int y,int c,int b)
{
	a[x][y]=0;
	if(x-1<=m&&y+3<=n)
	{
		if(a[c-1][b+3]<a[c][b]+1||a[c-1][b+3]!=-1)
		{
			return a[c][b]+1;
		}
		else
		{
			return a[c-1][b+3];
		}
	}
	
}
int f7(int m,int n,int x,int y,int c,int b)
{
	a[x][y]=0;
	if(x+1<=m&&y-3<=n)
	{
		if(a[c+1][b-3]<a[c][b]+1||a[c+1][b-3]!=-1)
		{
			return a[c][b]+1;
		}
		else
		{
			return a[c+1][b-3];
		}
	}
	
}
int f8(int m,int n,int x,int y,int c,int b)
{
	a[x][y]=0;
	if(x-1<=m&&y-3<=n)
	{
		if(a[c-1][b-3]<a[c][b]+1||a[c-1][b-3]!=-1)
		{
			return a[c][b]+1;
		}
		else
		{
			return a[c-1][b-3];
		}
	}
	
}

int main()
{
	int x,y,n,m;
	cin>>m>>n>>x>>y;
	for(int i=1;i<=m;i++)
	{
		for(int j=1;j<=n;j++)
		{
			a[i][j]=-1;
		}
	}
	a[x][y]=0;
	while(true)
	{
		int t=0,s=0;
		for(int i=1;i<=m;i++)
		{
			for(int j=1;j<=n;j++)
			{
				if(a[i+3][j+1]!=f1(m,n,x,y,i,j))
				{
					s=1;
				}
				if(a[i-3][j+1]!=f2(m,n,x,y,i,j))
				{
					s=1;
				}
				if(a[i+3][j-1]!=f3(m,n,x,y,i,j))
				{
					s=1;
				}
				if(a[i-3][j-1]!=f4(m,n,x,y,i,j))
				{
					s=1;
				}
				if(a[i+1][j+3]!=f5(m,n,x,y,i,j))
				{
					s=1;
				}
				if(a[i-1][j+3]!=f6(m,n,x,y,i,j))
				{
					s=1;
				}
				if(a[i+1][j-3]!=f7(m,n,x,y,i,j))
				{
					s=1;
				}
				if(a[i-1][j-3]!=f8(m,n,x,y,i,j))
				{
					s=1;
				}
				if(a[i][j]==t)
				{
					a[i+3][j+1]=f1(m,n,x,y,i,j);
					a[i-3][j+1]=f2(m,n,x,y,i,j);
					a[i+3][j-1]=f3(m,n,x,y,i,j);
					a[i-3][j-1]=f4(m,n,x,y,i,j);
					a[i+1][j+3]=f5(m,n,x,y,i,j);
					a[i-1][j+3]=f6(m,n,x,y,i,j);
					a[i+1][j-3]=f7(m,n,x,y,i,j);
					a[i-1][j-3]=f8(m,n,x,y,i,j);
				}
			}
		}
		t++;
	}
	for(int i=1;i<=m;i++)
	{
		for(int j=1;j<=n;j++)
		{
			cout<<left<<setw(5)<<a[i][j];
		}
		cout<<endl;
	}
}
2021/12/25 17:37
加载中...