首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【编程经验】优秀题解

【编程经验】优秀题解

作者头像
编程范 源代码公司
发布2018-07-24 17:06:48
发布2018-07-24 17:06:48
4730
举报

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;

}

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-06-29,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档