C++输入一个长度为n的数组a,里面的数字可能有重复,请你统计一下里面总共有多少种数字?
1小于等于n小于等于100,1小于等于so小于等于100
int a[101] = { 0 };
int main()
{
int n = 0;
int sum = 0;
cin >> n;
for (int i = 0; i < n; i++)
{
int b = 0;
cin >> b;
a[b]++;
}
for (int i = 0; i < n; i++)
{
if (a[i] > 0) sum++;
}
cout << "一共:" << sum << "种" << endl;
return 0;
}
方案思路:在 C++ 中将 std::list 转换为 std::unordered_set,set数据类型无重复数据的list。
如有帮助,敬请采纳,你的采纳是我前进的动力,O(∩_∩)O谢谢!!!!!!!!
#include <iostream>
#include <unordered_set>
#include <list>
int main()
{
std::list<int> list = { 1, 2, 3,33,99,33 };
std::unordered_set<int> s;
for (int const &i: list) {
s.insert(i);
}
int set_sum = 0;
for (int const &i: s) {
std::cout << i << ' ';
sum++;
}
std::cout << sum<< ' ';
return 0;
}
#include <vector>
#include <set>
using namespace std;
int fun(vector<int> arr) {
set<int> set(arr.begin(), arr.end());
return set.size();
}
int main()
{
vector<int> vec = { 1,2,3,4,5,6,7,8,9,10,3,4 };
int size = fun(vec);
return 0;
}
如有帮助,请采纳,谢谢
#include<iostream>
using namespace std;
template<typename T>
int get_number_num(T &array){
int length = end(array)-begin(array);
T new_arr={array[0]};
int now = 1;
int num=1;
for(int i=0;i<length;i++){
bool symbol=false;
for(int j=0;j<now;j++){
if(array[i]==new_arr[j]){
symbol=true;
break;
}}
if(!symbol){
new_arr[now]=array[i];
now+=1;
num+=1;
}
}
return num;
}
int main(int argc, char const *argv[])
{
int arr[] = {1,2,3,4,5,6,7,8,9,10, 1, 5, 48, 6};
int res = get_number_num(arr);
cout<<res<<endl;
char carr[] = {'a', 'b', 'c', 'd', 'r', 't', 'a', 'b'};
int cres = get_number_num(carr);
cout<<cres<<endl;
return 0;
}