《考研机试》(六)数组妙用

看一道题目:

大家思路有可能是这样: 将输入数据全部存储到一个数组里,然后可以冒泡排序一波,从小到大排序

那么怎么找到重复次数呢:我是这样想的,新定义数组b,原数组a,首先b[0] = a[0],定义指针i指向数组a,j指向原数组b,初值都是0,如果a[i] == b[j],是重复元素,那么i++,continue,否则b[++j] = a[i++]

这个有点复杂,有没有简单做法?

可以利用数组的标记特性:定义数组a,全部赋值为0,然后输入为k,则令a[k]++,最后打印a[k]>0的即可

代码:

#include <bits/stdc++.h>
using namespace std;

int a[105] = {0}; 

int main(){
	int n,x;
	scanf("%d", &n);
	for(int i=0; i<n; i++){
		scanf("%d", &x);
		a[x]++;
	}
	
	for(int i=0; i<n; i++){
		if( a[i]>0 ){
			printf("%d:出现次数%d\n", i, a[i]);
		} 
	}
	
	return 0;
}

 结果:

猜你喜欢

转载自www.cnblogs.com/Whgy/p/12313288.html