问题描述 校门外的池塘里传来一片鸭子的叫声。同学们都被这突如其来的鸭子叫声吸引了过去。毕竟这是多么田园的景象呀。不知道是谁,非提出这么一个问题,非常想知道有几只鸭子。所以,同学们努力对听到的声音进行了数字化工作。假设每一个数字代表一只鸭子,也就是只有同一只鸭子发出的声音是一样的。那么已知有N个叫声,计算出有多少只鸭子。 输入描述 输入的第一行为一个正整数n(n<100000),代表有n个叫声。 第二行有n个数字ai,数字之间用一个空格隔开(1 ≤ai ≤ 10000)。 输出描述 输出一个数字,代表鸭子的只数。
时间: 2024-03-14 07:46:11 浏览: 306
这道题目可以使用哈希表来统计每种叫声的数量,最后统计不同叫声的数量即可。
Java代码如下:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < n; i++) {
int a = scanner.nextInt();
map.put(a, map.getOrDefault(a, 0) + 1); // 统计每种叫声的数量
}
System.out.println(map.size()); // 输出不同叫声的数量
}
}
```
输入样例:
```
9
1 2 3 4 5 6 7 8 9
```
输出样例:
```
9
```
其中,`map.getOrDefault(a, 0)` 表示获取叫声 `a` 的数量,如果没有则默认值为 `0`,`map.put(a, map.getOrDefault(a, 0) + 1)` 表示将叫声 `a` 的数量加1。最后输出 `map` 的大小即可。
相关问题
问题 M: 校门外的树C++
您的问题似乎是在询问如何用C++编程语言描述“校门外的树”这个场景。在C++中,你可以通过定义结构体或类来表示一棵树,如果需要考虑它的位置,可以添加一个成员变量来代表树的位置(比如坐标或者在校门附近的标识)。下面是一个简单的例子:
```cpp
// 定义一个树的类
class Tree {
public:
// 假设树有一个名称和一个位置
std::string name;
int gatePosition; // 位置用整数表示,假设1表示在校门附近
// 构造函数
Tree(std::string treeName, int position)
: name(treeName), gatePosition(position) {}
};
// 创建一个实例来表示校门外的树
Tree schoolGateTree("校外大树", 1);
// 使用这个类的方法来操作树,例如查询位置
std::cout << "学校门外的树名为:" << schoolGateTree.name << ", 位置:" << schoolGateTree.gatePosition << std::endl;
```
p1047 校门外的树c语言
这是一道模拟题,题目要求我们在一排树中,去掉一些树后,计算剩余的树的数量。具体思路如下:
1.首先读入树的总数l和需要去掉的树的数量m。
2.定义一个长度为l+1的数组a,用来记录每个位置上是否有树,初始值都为1。
3.接着读入需要去掉的树的区间[u,v],将区间内的a[i]都置为0。
4.最后遍历整个数组a,统计值为1的元素个数,即为剩余的树的数量。
下面是C语言的代码实现:
```c
#include <stdio.h>
int main() {
int l, m, u, v;
scanf("%d %d", &l, &m);
int i, j, k = 0;
int a[l + 1];
for (i = 0; i <= l; i++) {
a[i] = 1;
}
for (i = 0; i < m; i++) {
scanf("%d %d", &u, &v);
for (j = u; j <= v; j++) {
a[j] = 0;
}
}
for (i = 0; i <= l; i++) {
if (a[i] == 1) {
k++;
}
}
printf("%d", k);
return 0;
}
```
阅读全文