蒟蒻求助
查看原帖
蒟蒻求助
614725
masonpop楼主2022/8/8 21:24
#include <bits/stdc++.h>
using namespace std;
#define mr make_pair
#define fi first
#define se second
int n,m,x22,y22;
char str[1010];
int a[1010][1010];//只统计经过的点
struct point{
    int x,y;
    int num;//权值
    int last;//几次没有走过
}p[1010];
map<char,pair<int,int> > mp;
int nx,ny;
int main()
{
    scanf("%d%d%d%d",&n,&m,&y22,&x22);
    nx=n-x22+1,ny=y22;
    scanf("%s",str+1);
    mp['N']=mr(-1,0);
    mp['S']=mr(1,0);
    mp['W']=mr(0,-1);
    mp['E']=mr(0,1);//四个方向
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            a[i][j]=m*(m+1)/2;//初始化
        }
    }
    for(int i=1;i<=m;i++)//枚举
    {
        p[i].x=nx,p[i].y=ny;
        p[i].last=0;//清零
        for(int j=1;j<=m;j++)
		{
        	if(j==i)continue;
        	p[j].last++,p[j].num+=p[j].last;
		}
		nx+=mp[str[i]].fi;
        ny+=mp[str[i]].se;//更新
    }
    for(int i=1;i<=m;i++)a[p[i].x][p[i].y]=p[i].num;//特殊点
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

我的思路就是没有经过的点直接填上,经过的点统计有几次没有走过,结果全WA,想不明白...求助qwq

2022/8/8 21:24
加载中...