1.问题说明
11
10
20
40
32
67
40
20
89
300
400
15
10
15
20//只显示1次
32
40//只显示1次
67
89
300
400
正常的算法:
1.遍历所有数组,去除掉重复的数字
2.使用XX排序法,进行数字的排序。
眼前一亮的机器算法
1.生成1-1000的数组,全部给0
2.输入,或生成随机数,将随机数的数字所对应的数组值置1
输入数字 15,则a[15] = 1;
3.遍历所有数组,如果a[i]>0,则输出i。
#include<iostream>
using namespace std;
int main()
{
int i, k, N, L;
int a, Hash[1001];
while (cin >> N)
{
/*初始化1000个数组*/
for (i = 0; i<1001; i++)
Hash[i] = 0;
/*输入排列的数组,将这个数字的地方置1*/
for (i = 0; i<N; i++)
{
cin >> a;
Hash[a]++;
}
/*遍历1000个数组 如果这个地方是大于1就打印*/
for (i = 0; i<1001; i++)
if (Hash[i]>0)
cout << i << endl;
}
return(0);
}
扩展
int main()
{
int arr[100], sum = 0;
char c;
int x = 4;
while (x--)
{
cin >> c;
arr[c] = 1;
}
for (int i = 0; i < 100; i++)
if (arr[i] == 1)
sum++;
cout << sum;
system("pause");
}