首页
学习
活动
专区
圈层
工具
发布

【编程经验】优秀题解

1) 第一种思路很简单,在全局定义一个大数组,所有元素初始为0,每输入一个数时,就在以这个数为数组下标的元素加一,最后输出结果。

参考代码如下:

#include <stdio.h>

int arr[1000000];

int main(void)

{

int n;

scanf("%d", &n);

int tmp;

int i;

for (i = 0; i < n; i++)

{

scanf("%d", &tmp);

arr[tmp]++;

}

for (i = 0; i < 1000000; i++)

{

if (arr[i] != 0)

{

printf("%d %d\n", i, arr[i]);

}

}

return 0;

}

2) 第二种方法就是比较直接的想法,将输入的所有数存放在一个数组中,先对数组进行从小打到排序,然后对该数组进行处理。

参考代码如下:

#include <stdio.h>

int main(void)

{

int n;

scanf("%d", &n);

int arr[n];

int i;

for (i = 0; i < n; i++)

{

scanf("%d", &arr[i]);

}

int j;

for (i = 0; i < n - 1; i++)

{

for (j = i + 1; j < n; j++)

{

if (arr[i] > arr[j])

{

int tmp = arr[i];

arr[i] = arr[j];

arr[j] = tmp;

}

}

}

//处理方式如下:

i = 0;

int tmp;

int num = 0;

while (i != n)

{

tmp = arr[i];

while (arr[i] == tmp)

{

num++;

i++;

}

printf("%d %d\n", tmp, num);

num = 0;

}

return 0;

}

出自我站“教你夺冠”,欢迎大家来撩。

下一篇
举报
领券