68分求助 ;(
查看原帖
68分求助 ;(
1739325
LawrenceLiu12345楼主2025/6/21 20:15
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int mtx[10][10]={0};
    int n,spx,spy;
    bool found=false;
    cin>>n;
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++) {
            cin>>mtx[i][j];
        }
    for(int i=0;i<n;i++) {
        for(int j=0;j<n;j++) {
            if(mtx[i][j]==0&&mtx[i+1][j]==1) {
                int l=j;
                int m=j;
                bool lf=false;
                bool rf=false;
                while (l>=0) {
                    l--;
                    if (mtx[l][j]==1) {
                        lf=true;break;
                    }
                }
                while (m<n) {
                    m++;
                    if (mtx[m][j]==1) {
                        rf=true;break;
                    }
                }
                if (lf&&rf) {
                    spx=i; spy=j;
                }
            }
        }
    }
    queue<pair<int,int>> q;
    q.push(make_pair(spx,spy));
    while(!q.empty()) {
        pair<int,int> p=q.front();
        //if (mtx[p.first][p.second]!=1) {
            mtx[p.first][p.second]=2;
        //}
        int f=p.first;
        int s=p.second;
        int r[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
        for(int k=0;k<4;k++) {
            if (mtx[f+r[k][0]][s+r[k][1]]==0&&f+r[k][0]>=0&&f+r[k][0]<n&&s+r[k][1]>=0&&s+r[k][1]<n) {
                q.push(make_pair(f+r[k][0],s+r[k][1]));
            }
        }
        q.pop();
    }
    for(int i=0;i<n;i++) {
        for(int j=0;j<n;j++) {
            cout<<mtx[i][j]<<" ";
        }
        cout<<endl;
    }
    return 0;
}

第四个测试点RE...?

第五个测试点TLE...???

测试详情

2025/6/21 20:15
加载中...