MOOC清华《程序设计基础》第4章第3题:不相同的个数(用筛法做)

题目描述

输入20个整数,输出其中出现了多少个不相同的数

输入格式

1行20个整数,用空格分开

输出格式

一个数字,表示多少个不相同的数

样例输入

1 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
样例输出

19


#include 
using namespace std;

#define N 20

int main()
{	
	int a[N] = {0};	
	for(int i = 0; i < N; i++)	
		cin >> a[i];
		
	bool sieve[N];
	for(int i = 0; i < N; i++)
		sieve[i] = true;
//切切不可用bool sieve[N] = {true}的方式给筛子赋值,否则只赋值了sieve[0]一个元素 

	int counter = 1;
		
	for(int i = 1; i < N; i++)	
	{	
		for(int j = 0; j < i; j++) 
			if(a[j] == a[i])
				sieve[i] = false;		
		if(sieve[i])
			counter++;
	}
	cout << counter;

	return 0;
}

注意切切不可用bool sieve[N] = {true}的方式给筛子赋值,否则只赋值了sieve[0]一个元素。另外,此题不宜用线性查找法做,因为会重复计数。


你可能感兴趣的:(C/C++,MOOC清华程设基础)