3 条题解

  • 1
    @ 2026-2-26 9:07:31

    依次处理每个颜色序号为.的格子,从颜色1往后枚举到一个最小的不会重复的颜色

    #include<bits/stdc++.h>
    using namespace std;
    const int N = 710;
    char ch[N][N];
    int main()
    {
    	int h, w; cin >> h >> w;
    	for (int i = 1; i <= h; i++)
    		for (int j = 1; j <= w; j++)
    			cin >> ch[i][j];
    	for (int i = 1; i <= h; i++)
    		for (int j = 1; j <= w; j++)
    		{
    			if (ch[i][j] != '.') continue;
    			int a = ch[i - 1][j] - '0', b = ch[i][j - 1] - '0',
    				c = ch[i + 1][j] - '0', d = ch[i][j + 1] - '0';
    			int id = 1;
    			while (id == a or id == b or id == c or id == d) id++;
    			ch[i][j] = id + '0';
    		}
    	for (int i = 1; i <= h; i++)
    	{
    		for (int j = 1; j <= w; j++) cout << ch[i][j];
    		cout << '\n';
    	}
    	return 0;
    }
    
    • 1
      @ 2026-2-25 11:22:11
      #include<bits/stdc++.h>
      using namespace std;
      char a[910][910];
      int main()
      {
      	int n,m;cin>>n>>m;
      	for(int i=1;i<=n;i++)
      	{
      		for(int j=1;j<=m;j++)
      		{
      			cin>>a[i][j];
      		}
      	}
      	for(int i=1;i<=n;i++)
      	{
      		for(int j=1;j<=m;j++)
      		{
      			if(a[i][j]=='.')
      			{
      				if(a[i+1][j]!='1'&&a[i-1][j]!='1'&&a[i][j+1]!='1'&&a[i][j-1]!='1'){a[i][j]='1';continue;}
      				if(a[i+1][j]!='2'&&a[i-1][j]!='2'&&a[i][j+1]!='2'&&a[i][j-1]!='2'){a[i][j]='2';continue;}
      				if(a[i+1][j]!='3'&&a[i-1][j]!='3'&&a[i][j+1]!='3'&&a[i][j-1]!='3'){a[i][j]='3';continue;}
      				if(a[i+1][j]!='4'&&a[i-1][j]!='4'&&a[i][j+1]!='4'&&a[i][j-1]!='4'){a[i][j]='4';continue;}
      				if(a[i+1][j]!='5'&&a[i-1][j]!='5'&&a[i][j+1]!='5'&&a[i][j-1]!='5'){a[i][j]='5';continue;}//判断四周的方块
      			}
      		}
      	}
      	for(int i=1;i<=n;i++)
      	{
      		for(int j=1;j<=m;j++)
      		{
      			cout<<a[i][j];
      		}
      		puts("");
      	}
      }
      
      • 0
        @ 2026-9-1 20:59:55
        #include <bits/stdc++.h>
        using namespace std;
        
        const int N = 705;
        constexpr int dir[4][2] = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}};
        
        int n, m;
        char c[N][N];
        
        int main() {
        	cin >> n >> m;
        	for (int i = 1; i <= n; ++i) for (int j = 1; j <= m; ++j) cin >> c[i][j];
        	for (int i = 1; i <= n; ++i) for (int j = 1; j <= m; ++j) if (c[i][j] == '.') {
        		set <int> s;
        		for (int k = 0; k < 4; ++k) {
        			int di = i + dir[k][0], dj = j + dir[k][1];
        			if (di && di <= n && dj && dj <= m && c[di][dj] != '.') s.insert(c[di][dj]);
        		}
        		for (int k = '1', flag = 0; k <= '5' && !flag; ++k) if (s.find(k) == s.end()) flag = 1, c[i][j] = k;
        	}
        	for (int i = 1; i <= n; ++i) {
        		for (int j = 1; j <= m; ++j) cout << c[i][j];
        		if (i < n) cout << '\n';
        	}
        	return 0;
        }
        
        • 1

        信息

        ID
        2510
        时间
        2000ms
        内存
        1024MiB
        难度
        8
        标签
        递交数
        11
        已通过
        10
        上传者