• 清洁工 c++算法


    [传智杯 #5 练习赛] 清洁工

    题目描述

    有一个 n × n n\times n n×n 的地块,一个连续 i i i 分钟没人经过的地面在第 i i i 分钟会落上 i i i 个单位的灰,有人经过时不会落灰但灰也不会清零,在人走后第一分钟又会落上一个单位的灰,以此类推。你在这个 n × n n\times n n×n 的范围内移动,你的移动轨迹可以描述为一个由 N,S,W,E \text{N,S,W,E} N,S,W,E 组成的字符串,每个字母分别表示上、下、左、右。这个人一开始在点 ( x , y ) (x,y) (x,y),每一分钟移动一步。

    求最后每一个位置上落下的灰的量。

    本题中的上和右分别表示 y y y 轴正方向和 x x x 轴正方向。保证你没有超过移动的范围。

    输入格式

    第一行四个正整数 n , m , x , y n,m,x,y n,m,x,y,含义如题面所示,其中 x , y x,y x,y 表示横纵坐标,不是数组下标。
    第二行一个长度为 m m m 的字符串,表示你的移动序列。

    输出格式

    n n n 行,每行 n n n 个数,第 i i i 行的第 j j j 个数表示坐标 ( j , n − i + 1 ) (j,n-i+1) (j,ni+1) 上的灰的数量

    样例 #1

    样例输入 #1

    5 4 1 1
    NENW
    
    • 1
    • 2

    样例输出 #1

    10 10 10 10 10 
    10 10 10 10 10 
    10 6 10 10 10 
    4 4 10 10 10 
    6 10 10 10 10
    
    • 1
    • 2
    • 3
    • 4
    • 5

    样例 #2

    样例输入 #2

    7 14 1 1
    NENENENENESSSS
    
    • 1
    • 2

    样例输出 #2

    105 105 105 105 105 105 105 
    105 105 105 105 55 61 105 
    105 105 105 49 51 69 105 
    105 105 51 49 105 79 105 
    105 61 55 105 105 91 105 
    79 69 105 105 105 105 105 
    91 105 105 105 105 105 105
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    样例 #3

    样例输入 #3

    10 70 2 2
    NWSNSNNNSNNSSNNSENNNNEESNWSESESSWENNSEWESWWWESEEESENNSENWNESNWSNNNEESS
    
    • 1
    • 2

    样例输出 #3

    2485 2485 2485 2485 2485 2485 2485 2485 2485 2485 
    2485 1407 1205 1267 2485 2485 2485 2485 2485 2485 
    2485 1435 1281 1167 2485 2485 2485 2217 2281 2347 
    2485 1465 2485 1255 1041 2485 2485 2155 2485 2415 
    1557 1497 2485 2485 969 1177 2485 1733 1807 2485 
    1471 1531 1315 907 935 1267 2485 1473 1647 2485 
    1631 2485 2485 1357 1381 1407 1435 1499 1645 2485 
    2021 2347 2485 2485 2485 2485 1465 1497 2485 2485 
    2087 2415 2485 2485 2485 2485 2485 2485 2485 2485 
    2485 2485 2485 2485 2485 2485 2485 2485 2485 2485
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    样例 #4

    样例输入 #4

    5 4 2 1
    NENW
    
    • 1
    • 2

    样例输出 #4

    10 10 10 10 10 
    10 10 10 10 10 
    10 10 6 10 10 
    10 4 4 10 10 
    10 6 10 10 10
    
    • 1
    • 2
    • 3
    • 4
    • 5

    提示

    本题 y 轴朝上,x 轴朝右,样例输出中的左下角表示 ( 1 , 1 ) (1,1) (1,1),第一分钟你在初始点处,第二分钟移动到相应的位置,第 m + 1 m+1 m+1 分钟移动到最后一个点,但是总共只有 m m m 分钟,因此最后一个点不受移动的影响


    样例 1 解释:

    你的移动路径为 ( 1 , 1 ) → ( 1 , 2 ) → ( 2 , 2 ) → ( 2 , 3 ) → ( 1 , 3 ) (1,1)\rightarrow(1,2)\rightarrow(2,2)\rightarrow(2,3)\rightarrow(1,3) (1,1)(1,2)(2,2)(2,3)(1,3),共 4 4 4 分钟。

    对于第 1 1 1 分钟, ( 1 , 1 ) (1,1) (1,1) 灰层数不变,其余点被落下了 1 1 1 层灰。

    对于第 2 2 2 分钟, ( 1 , 2 ) (1,2) (1,2) 灰层数不变, ( 1 , 1 ) (1,1) (1,1) 被落下了 1 1 1 层灰,其余点落下 2 2 2 层灰。

    对于第 3 3 3 分钟, ( 2 , 2 ) (2,2) (2,2) 灰层数不变, ( 1 , 1 ) (1,1) (1,1) 落下 2 2 2 层灰, ( 1 , 2 ) (1,2) (1,2) 落下 1 1 1 层灰,其余点落下 3 3 3 层灰。

    对于第 4 4 4 分钟, ( 2 , 3 ) (2,3) (2,3) 灰层数不变, ( 1 , 1 ) (1,1) (1,1) 落下 3 3 3 层灰, ( 1 , 2 ) (1,2) (1,2) 落下 2 2 2 层灰, ( 2 , 2 ) (2,2) (2,2) 落下 1 1 1 层灰,其余点落下 4 4 4 层灰。

    注意最后你移动到了 ( 1 , 3 ) (1,3) (1,3),但是时间只有 4 4 4 分钟,所以实际上不会对 ( 1 , 3 ) (1,3) (1,3) 造成影响。初始点不一定在 ( 1 , 1 ) (1,1) (1,1)

    1 ≤ n ≤ 50 , 1 ≤ m ≤ 1000 1\le n\leq 50,1\leq m\le 1000 1n50,1m1000

    我的代码:

    #include
    #include
    using namespace std;
    int main(){
    	int n,m,x,y,i,j,z,t[51][51],store[51][51],sc[51][51],fx,fy;
    	char lj[50];
    	cin>>n>>m>>x>>y;
    	cin>>lj;
    	//初始化 
    	for(i=1;i<=n;i++){
          	for(j=1;j<=n;j++){
          	   t[i][j]=0;
    		   store[i][j]=0;
    	    }	
    	}
    	//移动变化的 
    	for(z=0;z
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
  • 相关阅读:
    django中orm定义数据库表字段的几种字段类型
    Bootstrap Modal
    APP启动流程三(源码30)之APP进程启动及Activity启动
    【Python】科研代码学习:十四 wandb (可视化AI工具)
    AIR32F103(十一) 在AIR32F103上移植微雪墨水屏驱动
    【重识云原生】第六章容器6.1.4节——Docker核心技术LXC
    音视频开发,为什么要学习FFmpeg?应该怎么入手FFmpeg学习?
    如何在edge浏览器中给PDF添加文字批注
    二、【React拓展】懒加载 lazy
    指针的应用与用法
  • 原文地址:https://blog.csdn.net/m0_53394907/article/details/127942862