c++ - 我们如何在数据集中找到满足给定条件的元素及其在数据集中的序号(C++)?
问题描述
标准输入的第一行包含元素数 (N) (1<=N<=100)。接下来的行包含一个数字 (M) (1<=M<=300),我们知道,最多可以有 100 个“M”元素。
我们需要找到大于 120 的最小数字。在标准输出的第一行中,我们需要打印序列号(即“M”号)和该元素的值,并且之间应该有一个空格他们。如果没有满足给定条件的数字,则程序应打印 -1。如果满足条件的元素更多,则程序应打印序号较小的元素。我们应该得到与示例完全相同的输出,否则它不起作用。
例如:
输入:
6
118
200
199
116
200
122
输出:6 122
到目前为止,我认为我编写了以下代码,它将小于 120 的数字放入向量中。由此,我们需要梳理出正确的元素并给出条件。我不确定这段代码是否适用于排序大于 120 的数字,但我编写这段代码是为了表明,我已经尝试了很长时间,但我真的被卡住了。
#include <iostream>
#include<vector>
using namespace std;
int main(){
vector<int> v;
int N, M, counter = 0;
cin >> N >> M;
for (int i = 0; i < N; i++) {
if (M < 120) {
counter++;
v.push_back(i+1);
}
}
for (vector<int>::iterator itr = v.begin(); itr != v.end(); ++itr)
{
}
return 0;
}
请记住,我还是初学者,所以请以这种方式回答我的问题。感谢您的任何帮助。
解决方案
这是我在阅读您的问题并查看输入后想到的。我认为你在你的问题中犯了一个小错误 - 它应该是大于 120 的最小数字。查看下面给出的代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, ans = INT_MAX, pos = -1;
cin >> n;
for (int i = 0; i < n; i++) {
int x;
cin >> x;
if (x > 120 && x < ans) {
ans = x;
pos = i + 1;
}
}
if (pos != -1)
cout << pos << ' ' << ans;
else
cout << -1;
}
推荐阅读
- c++ - tcp 客户端可以使用相同的端口连接到不同的服务器吗?
- keycloak - 将 LDAP 组映射到现有的 keycloak 组
- c - 为什么我不能在调用 wait_for_completion_timeout() 方法之前对完成变量调用 complete() 方法
- flask - 图像未正确显示
- php - PHP - 睡眠两个脚本
- android - 空列表框显示在列表视图中
- javascript - Python 和 JavaScript 中的哈希 sha1
- php - PHP remote_addr 不适用于 iOS 与 VPN
- blazor - 添加新服务时在 blazor.net 中没有注册类型错误的服务
- webassembly - 运行 WebAssembly 的工具