20分求改
  • 板块P1187 3D模型
  • 楼主maoding
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/1/26 16:04
  • 上次更新2023/10/24 03:02:18
查看原帖
20分求改
550620
maoding楼主2023/1/26 16:04

HELP!!!!!!!!!!!!!!

#include <iostream>
using namespace std;

int a[1010][1010];

int main()
{
    int n, m;
    cin >> n >> m;
    long long sum = 0;
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
        {
        	char ch;
        	cin >> ch;
            a[i][j] = int(ch - '0');
            if (a[i][j] != 0) sum++;
        }
    }
    for (int i = 1; i <= n; i++)
    {
    	int maxn = -1;
    	for (int j = 1; j <= m; j++)
    	{
    		maxn = max(maxn, a[i][j]);
		}
    	sum += maxn;
	}
	for (int j = 1; j <= m; j++)
	{
		int maxn = -1;
		for (int i = 1; i <= n; i++)
		{
			maxn = max(maxn, a[i][j]);
		}
		sum += maxn;
	}
    sum *= 2;
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
        {
            if (a[i + 1][j] > a[i][j] && a[i - 1][j] > a[i][j] && a[i][j + 1] > a[i][j] && a[i][j - 1] > a[i][j])
            {
            	int minn = min(a[i + 1][j], min(a[i - 1][j], min(a[i][j + 1], a[i][j - 1])));
                sum = sum + (minn - a[i][j]) * 4;
            }
            else if (a[i + 1][j] > a[i][j] && a[i - 1][j] > a[i][j] && (a[i][j + 1] <= a[i][j] && a[i][j - 1] <= a[i][j]))
            {
            	int minn = min(a[i + 1][j], a[i - 1][j]);
            	sum = sum + (minn - a[i][j]) * 2;
			}
			else if ((a[i + 1][j] <= a[i][j] || a[i - 1][j] <= a[i][j]) && a[i][j + 1] > a[i][j] && a[i][j - 1] > a[i][j])
			{
				int minn = min(a[i][j + 1], a[i][j - 1]);
				sum = sum + (minn - a[i][j]) * 2;
			}
        }
    }
    cout << sum << endl;
    return 0;
}
2023/1/26 16:04
加载中...