新手提问,为什么第九个点是WA
查看原帖
新手提问,为什么第九个点是WA
584188
Maugham21013079楼主2021/12/2 16:02

就是最简单地列举所有情况一一做:

#include<iostream>

using namespace std;
char a[101][101];
int b[101][101];

int main()
{
	int n,m;
	cin>>n>>m;
	for(int i=0;i<n;i++)
		for(int j=0;j<m;j++)
			cin>>a[i][j];
	for(int i=0;i<n;i++)
		for(int j=0;j<m;j++)
			b[i][j]=0;
	
			
	for(int i=1;i<n-1;i++)
		for(int j=1;j<m-1;j++)
		{
			if(a[i][j]=='*')
			{
				//cout<<"中间部分加了一"<<endl; 
				b[i][j]=-99;
				b[i][j+1]++;
				b[i][j-1]++;
				b[i+1][j]++;
				b[i-1][j]++;
				b[i+1][j+1]++;
				b[i-1][j+1]++;
				b[i+1][j-1]++;
				b[i-1][j-1]++;
			}
		}
	
	for(int j=1;j<m-1;j++)//去除了四个角上下两行 
	{
		if(a[0][j]=='*')
			{
				//cout<<"上行加了一"<<endl;
				b[0][j]=-99;
				b[0][j-1]++;
				b[0][j+1]++;
				b[1][j]++;
				b[1][j-1]++;
				b[1][j+1]++;
			}
			
		if(a[n-1][j]=='*')
			{
				//cout<<"下行加了一"<<endl;
				b[n-1][j]=-99;
				b[n-1][j-1]++;
				b[n-1][j+1]++;
				b[n-2][j]++;
				b[n-2][j-1]++;
				b[n-2][j+1]++;
			}	
	}
	
	for(int i=1;i<n-1;i++)//去除了四个角左右两列 
	{
		if(a[i][0]=='*')
			{
				//cout<<"左列加了一"<<endl;
				b[i][0]=-99;
				b[i-1][0]++;
				b[i+1][0]++;
				b[i][1]++;
				b[i-1][1]++;
				b[i+1][1]++;
			}
			
		if(a[i][m-1]=='*')
			{
				//cout<<"右列加了一"<<endl;
				b[i][m-1]=-99;
				b[i-1][m-1]++;
				b[i+1][m-1]++;
				b[i][m-2]++;
				b[i-1][m-2]++;
				b[i+1][m-2]++;
			}	
	}
	
	if(a[0][0]=='*')//四个角 
	{
		//cout<<"左上角加了一"<<endl; 
		b[0][0]=-99;
		b[1][0]++;
		b[1][1]++;
		b[0][1]++;
	}
	if(a[n-1][0]=='*')
	{
		//cout<<"左下角加了一"<<endl;
		b[n-1][0]=-99;
		b[n-1][1]++;
		b[n-2][1]++;
		b[n-2][0]++;
	}
	if(a[0][m-1]=='*')
	{
		//cout<<"右上角加了一"<<endl;
		b[0][m-1]=-99;
		b[1][m-1]++;
		b[1][m-2]++;
		b[0][m-2]++;
	}
	if(a[n-1][m-1]=='*')
	{
		//cout<<"右下角加了一"<<endl;
		b[n-1][m-1]=-99;
		b[n-1][m-2]++;
		b[n-2][m-1]++;
		b[n-2][m-2]++;
	}
	
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			if(b[i][j]<0)
				cout<<"*";
			else
				cout<<b[i][j];	
		}
		cout<<endl;
	}
	return 0;
}

其他点都过了,就第九个点,不理解,下载了数据点也全是乱码,完全没有*和?,求助大佬。

2021/12/2 16:02
加载中...