原题链接:蓝桥杯算法训练VIP-数的统计
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;
}0.0分
8 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#include<stdio.h> int a[1000000]={0}; int main() { int n,m; int i,j; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&m); a[m]++; } for(i=1;i<=1000000;i++) { if(a[i]>0){ printf("%d %d\n",i,a[i]); } } return 0; } 麻烦各位看下哪里错了