L1-087 机工士姆斯塔迪奥*(使用C++动态数组new暴力实现)
  i5ASLtJTtAkC 2023年11月02日 78 0
C++
L1-087 机工士姆斯塔迪奥
分数 20
作者 DAI, Longao
单位 杭州百腾教育科技有限公司

在 MMORPG《最终幻想14》的副本“乐欲之所瓯博讷修道院”里,BOSS 机工士姆斯塔迪奥将会接受玩家的挑战。

你需要处理这个副本其中的一个机制:N×M 大小的地图被拆分为了 N×M 个 1×1 的格子,BOSS 会选择若干行或/及若干列释放技能,玩家不能站在释放技能的方格上,否则就会被击中而失败。

给定 BOSS 所有释放技能的行或列信息,请你计算出最后有多少个格子是安全的。

输入格式:

输入第一行是三个整数 N,M,Q (1N×M105,0Q1000),表示地图为 N 行 M 列大小以及选择的行/列数量。

接下来 Q 行,每行两个数 Ti,Ci,其中 Ti=0 表示 BOSS 选择的是一整行,Ti=1 表示选择的是一整列,Ci 为选择的行号/列号。行和列的编号均从 1 开始。

输出格式:

输出一个数,表示安全格子的数量。

输入样例:

5 5 3
0 2
0 4
1 3
 

输出样例:

12
 
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

解题思路:
先new一个二级指针创造出二维地图,然后用循环给地图全部附上初值0.
然后根据输入给地图被攻击的地方赋值1.
最后用循环用sum记录地图还剩下几个0,输出,OK完毕。
 
代码部分:
 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int x, y, m;
 6     cin >> x >> y >> m;
 7     bool **map=new bool*[y];
 8     for (int i = 0; i <= y; i++)
 9     {
10         map[i] = new bool[x];
11         for (int k = 0; k <= x; k++)
12             map[i][k] = 0; 
13     }
14     for (int i = 0; i < m; i++)
15     {
16         bool first;
17         int num;
18         cin >> first >> num;
19         if (first == 1)//列,x 
20         {
21             for (int k = 1; k <= x; k++)
22                 map[num][k] = 1;
23         }
24         else
25         {
26             for (int k = 1; k <= y; k++)
27                 map[k][num] = 1;
28         }
29     }
30     int sum = 0;
31     for (int i = 1; i <= y; i++)
32     {
33         for (int k = 1; k <= x; k++)
34         {
35             if (map[i][k] == 0)
36                 sum++;
37         }
38     }
39     cout << sum;
40     return 0;
41 }

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  8Tw5Riv1mGFK   2024年05月01日   82   0   0 C++
  BYaHC1OPAeY4   2024年05月08日   58   0   0 C++
  yZdUbUDB8h5t   2024年05月05日   44   0   0 C++
  oXKBKZoQY2lx   2024年05月17日   61   0   0 C++
i5ASLtJTtAkC