Thứ Ba, 3 tháng 5, 2022

ITABLE C++

#include <bits/stdc++.h>
using namespace std;
char a[2000][2000];
int b[2000][2000];
char c[1000];
int d;
int n,m;
void nhap()
{
    cin>>m>>n;
    for(int i=1;i<=m;i++)
        for(int j=1;j<=n;j++){
            cin>>a[i][j];
            //cout<<a[i][j];
}
}

void tao_vien()
{
    for(int i=0;i<=m+1;i++)
    {
        b[i][0]=3;
        b[i][n+1]=3;
    }
    for(int i=0;i<=n+1;i++)
    {
        b[0][i]=3;
        b[m+1][i]=3;
    }
}
void truyvet(int x,int y,int k)
{
    for(int i=d;i>=1;i--)
    {
        if(c[i] == 'W') y++;
        else if(c[i] == 'E') y--;
        else if(c[i] == 'S') x--;
        else if(c[i] == 'N') x++;
        b[x][y]=k;
    }
}
void di(int x,int y)
{
     d=0;
    while(b[x][y]==0)
    {
        d++; c[d]= a[x][y]; b[x][y]=1;
        if(a[x][y] == 'W') y--;
        else if(a[x][y] == 'E') y++;
        else if(a[x][y] == 'N') x--;
        else if(a[x][y] == 'S') x++;
    }
    if(b[x][y]==3 || b[x][y]==2) truyvet(x,y,2);
}


void giai()
{
    tao_vien();
    for(int i=1;i<=m;i++)
        for(int j=1;j<=n;j++)
            if(b[i][j]==0) di(i,j);
    int res=0;
    for(int i=1;i<=m;i++)
    {
        for(int j=1;j<=n;j++)
        {
            if(b[i][j]==1) res++;
        }
    }
    cout<<res;
}

int main()
{
    ios_base::sync_with_stdio(0);
    cout.tie(0); cin.tie(0);
    freopen("itable.inp","r",stdin);
    freopen("itable.out","w",stdout);
    nhap();
    giai();
}

Không có nhận xét nào:

Đăng nhận xét

Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.