C++计算不同的数字
C++ count different numbers given
程序必须计算标准输入的不同数字。例如,当输入时
6 <- how many numbers
1
3
1
4
3
786345
它应该发出
4
这是我的解决方案,尽管太慢了。有比这更快的路吗?
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
vector<int> occured; //vector of numbers that occured already
/*
int findType(int find)
finds where given number should be, I want to keep this array sorted.
in case of number existed already return -1; otherwise return the index for inserting.
*/
int findType(int find)
{
for (int i=0; i<occured.size(); i++) //for each number in occured array
if (find==occured[i]) return -1; //if it is same return it occured
else if (find<occured[i]) return i;
return occuerd.size();
};
int main(int argc, char *argv[])
{
int n; // read how many numbers will be given
cin>>n;
int tmp; //temp variables.
int tmp2;
for (int i=0; i<n; i++) //for each number
{
cin>>tmp; //get it
if ((tmp2=findType(tmp))!=-1) //check if it occured
occured.insert(occured.begin()+tmp2,tmp); // if not add it to occured vector.
}
cout<<occured.size(); //print how many different numbers
//system("PAUSE"); //uncomment if needed
return 0;
}
使用std::set
而不是std::vector
怎么样?它将确保没有条目存在两次(你不必检查;它也会被排序),此外,你只需要获得大小就可以了解不同元素的数量。
示例:
std::set<int> occured;
int tmp;
int n = 10; // or input it
for (int i=0; i<n; i++) {
cin >> tmp;
occured.insert(tmp);
}
cout << occured.size();
对于初学者,使用push_back()
将输入插入std::vector
。获得所有输入后,使用std::sort
并CCD_ 6。类似于:
std::vector<int> numbers;
int nextValue;
while ( std::cin >> nextValue ) {
numbers.push_back( nextValue );
}
std::sort(numbers.begin(), numbers.end());
int results = std::unique(numbers.begin(), numbers.end()) - numbers.begin();
相关文章:
- C++如何计算用户输入的数字中的偶数位数
- 如何计算数组中元素的位数?(不是数组的长度),并计算其数字的总和
- 计算十进制 c++ 之后的数字
- 我可以通过取每个数字的模并取和来计算大数的模数吗?
- 在C++中编程,将 3 个数字发送到一个函数,然后计算这 3 个数字的平均函数
- 如何在向量中某个数字之后重新计算进程
- 如何计算整数的十进制数字?
- 如何使用count_if计算向量中的可变数字范围
- 如何计算整数链中使用了多少次数字?
- 如何计算给定数字在二叉树中出现的次数?
- C++在不使用pow或循环的情况下计算一个数字的幂
- 从文本文件中的每一行读取数字,并计算数字重复的次数
- 如何使用递归计算从 0 到给定数字的奇数?
- 在手臂氖中高效计算两个不同的数字
- 如何将此代码转换为两个以上的数字(计算HCF)
- 相同数字计算的怪异结果差异
- 用非常大的数字计算
- 猜数字:计算机要猜多少次才能得到正确的数字
- 从给定的数字计算所有可能的数字
- 根据存储在集合中的数字计算向量中的int