C++求救
查看原帖
C++求救
811469
None_g楼主2024/4/28 17:35

每日折磨大佬

输出半天没反应,应该是超时了

代码如下

#include<bits/stdc++.h>
using namespace std;
int main()
{
    char a[105][105];
    int b[105][105],n,m,i,j;
    cin>>n>>m;
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));//清空
	for (i=0;i<=n;i++)
	{
		for (j=0;j<=m;j++)
		{
			cin>>a[i][j];
			if (a[i][j]=='*')
			{
				b[i][j]=10;
			}
		}
	}//一边输入 一边转换 有地雷为10(后面有大用(最骄傲的一点))
	for (i=0;i<=n;i++)
	{
		for (j=0;j<=m;j++)
		{
			if (b[i][j]==10)
			continue;
			if (i==0 && j==0)
			{
				b[i][j]=(b[i+1][j]+b[i][j+1]+b[i+1][j+1])/10;
				continue;
			}
			if (i==n && j==m)
			{
				b[i][j]=(b[i-1][j]+b[i][j-1]+b[i-1][j-1])/10;
				continue;
			}
			if (i==n && j==0)
			{
				b[i][j]=(b[i-1][j]+b[i][j+1]+b[i-1][j+1])/10;
				continue;
			}
			if (i==0 && j==m)
			{
				b[i][j]=(b[i+1][j]+b[i][j-1]+b[i+1][j-1])/10;
				continue;
			}
			if (i==0)
			{
				b[i][j]=(b[i+1][j]+b[i-1][j]+b[i][j-1]+b[i+1][j+1]+b[i-1][j+1])/10;
				continue;
			}
			if (i==n)
			{
				b[i][j]=(b[i+1][j]+b[i-1][j]+b[i][j+1]+b[i+1][j-1]+b[i-1][j-1])/10;
				continue;
			}
			if (j==0)
			{
				b[i][j]=(b[i][j-1]+b[i][j+1]+b[i+1][j]+b[i+1][j+1]+b[i+1][j-1])/10;
				continue;
			}
			if (j==m)
			{
				b[i][j]=(b[i-1][j]+b[i][j-1]+b[i][j+1]+b[i-1][j-1]+b[i-1][j+1])/10;
				continue;
			}
			else 
			{
				b[i][j]=(b[i-1][j]+b[i+1][j]+b[i][j-1]+b[i][j+1]+b[i-1][j-1]+b[i+1][j+1]+b[i-1][j+1]+b[i+1][j-1])/10;
				continue;
			}
				
		}
	}//分一堆情况讨论
	for (i=0;i<=n;i++)
	{
		for (j=0;j<=m;j++)
		{
			if (b[i][j]==10)
			cout<<'*';
			else 
			cout<<b[i][j];
		}//终于结束了!!
		cout<<endl;
	}
    return 0;
}
2024/4/28 17:35
加载中...