首页 > 其他分享 >边遍历边统计妙用

边遍历边统计妙用

时间:2024-04-15 13:11:41浏览次数:14  
标签:妙用 遍历 f1 int ++ cnt2 cnt1 ans 统计

链接:https://ac.nowcoder.com/acm/contest/80259/B
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

小红来到了地下城的一个房间,房间被分成 n 行 m 列的格子,小红站在其中一个格子上,她可以向一个方向攻击整条直线的所有格子(小红不能改变自己的位置和朝向)。
小红想知道,自己可以攻击到多少只怪物?

输入描述:

第一行输入两个正整数n,m,代表矩阵的行数和列数。
接下来的 n 行,每行输入一个字符串,代表矩阵。字符串仅由 ‘ . ’、' * ' 和大写字母组成。其中 ' . ' 代表空地,' * ' 代表该格子上有一只怪物。大写字母有且仅有一个,且为 ' W '、' S '、' A '、' D ' 中的一种,代表小红面朝的方向。' W' 代表向上,' S ' 代表向下,' A ' 代表向左,' D ' 代表向右。
1 ≤ n, m ≤ 1000

输出描述:

小红可以攻击到的怪物数量。

输入

4 5
..***
.****
**.**
*.*A*

输出

2

说明

小红向左攻击,可以攻击到两个怪物。












解答

#include <iostream>
using namespace std;
const int N = 1010;

// cnt1 统计当前点左边的数
// cnt2 统计当前点上边的数
// cnt1[i]++ 也就是当前点横坐标加加,也就统计出横轴的数
// cnt2[j]++ 也就是当前点纵坐标加加,也就统计出纵轴的数
int cnt1[N], cnt2[N];
int ans;

int main()
{
	int n, m;
	char c;
	cin >> n >> m;

	int f1 = -1;
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= m; j++)
		{
			cin >> c;
			if (c == '*') cnt1[i]++, cnt2[j]++;
			if (c == 'A') ans = cnt1[i];
			if (c == 'D') ans = i, f1 = 1, cnt1[i] = 0;
			if (c == 'W') ans = cnt2[j];
			if (c == 'S') ans = j, f1 = 2, cnt2[j] = 0;
		}

	if (f1 == -1) cout << ans << endl;
	if (f1 == 1) cout << cnt1[ans] << endl;
	if (f1 == 2) cout << cnt2[ans] << endl;
}

标签:妙用,遍历,f1,int,++,cnt2,cnt1,ans,统计
From: https://www.cnblogs.com/xingzhuz/p/18135733

相关文章

  • node统计指定文件夹内代码行数
    1.来源想对于自己接触前端日常学习与思考的代码行数进行一个统计,看自己大约敲了多少代码2.代码constfs=require('fs')constpath=require('path')functioncalculateCodeLines({directory='',writeResFilePath='',fileReg=/\.(js|ts|jsx|tsx|vue|ht......
  • 二叉树-层序遍历
    二叉树-层序遍历之前所述二叉树的递归遍历或者迭代遍历都属于深度优先搜索,即先迭代或者递归到树的某一枝最深处再逐渐回退,再到另一支的最深处再逐渐回退,从而完成遍历。而层序遍历属于广度优先遍历,即一层一层去遍历。需要借助队列辅助实现一层一层遍历的逻辑,因为其先进先出的逻辑......
  • BZOJ 4403序列统计
    假设存在一个满足条件的长度为i的不下降序列(显然是一定存在的)那么只需要从中选出i个数即可(不必在意选出具体数的大小,可以把满足条件的序列写下来,选几个数感受一下)。但是$n\choosem$里的\(m\)的是就是\((r-l+1)\)吗?乍一看是这样的,但是这样会出现一个问题,单调不下降子序......
  • 二叉树中序和后序遍历表达式
    什么是二叉树二叉树是一种树形结构,每个节点最多有两个子节点。其中,左子节点的值小于等于父节点的值,右子节点的值大于等于父节点的值。这种特殊的结构使得二叉树在搜索、排序等方面有着广泛的应用。二叉树的遍历方式二叉树的遍历方式有三种:前序遍历、中序遍历和后序遍历。其中,前......
  • ansible 统计 ssh 登录信息
    hosts[centos-root]192.168.174.129ansible_ssh_port=22192.168.174.130ansible_ssh_port=22192.168.174.131ansible_ssh_port=22AnsibleVault文件创建AnsibleVault文件#ansible-vaultcreatepasswords.ymlNewVaultpassword:#123456......
  • 游游的排列统计(携程24秋招研发岗第一批)
    题面核心思想素数筛先预处理出20以内的素数然后用全排列的思想去做就好了,就是多了个判断。代码importjava.util.*;publicclassMain{staticfinalintMAXN=(int)(21);staticint[]isNotPrime=newint[21];staticint[]v=newint[11];sta......
  • Qt 如何遍历序列容器(QVector|QMap|...)
    QT提供了两种风格的遍历器:Java和STL一、Java风格遍历器Java风格的遍历器是Qt首先推荐使用的形式。这种风格比起STL风格的遍历器更方便。方便的代价就是不如后者高效。Java风格的遍历器指向的是两个元素之间的位置,而不是指向元素本身。因此,它们可能会指向集合第一......
  • 统计机器学习—概论
    统计学习方法实现步骤主要组成监督学习非监督学习半监督学习强化学习监督学习任务学习一个模型,使模型能够对任意给定的输入,对其相应的输出做一个好的预测基本概念实例instance每一个具体的输入是一个实例通常由特征向量表示,所有特征......
  • Linux代码行数统计工具cloc
    目录安装cloc使用cloc输出结果结论cloc是一个非常有用的命令行工具,用于统计源代码行数和代码复杂性。它支持多种编程语言,包括C、C++、Java、Python、Ruby等。cloc可以帮助开发者了解代码库的规模、结构和复杂性,从而更好地管理和维护代码。安装cloccloc可以在多种操作......
  • 《统计学习方法》第一章
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、统计学习分类1.基本分类1.1监督学习1.2无监督学习1.3强化学习1.4半监督学习和主动学习2.模型分类2.1概率模型与非概率模型2.2线性与非线性2.3参数化和非参数化模型3.算法分类4.技巧......