教你夺冠


私信TA

用户名:835685327

访问量:156776

签 名:

相互交流 相互学习

等  级
排  名 15
经  验 22543
参赛次数 0
文章发表 84
年  龄 0
在职情况 学生
学  校 辣鸡施工大学
专  业

  自我简介:

努力刷题 熟能生巧!

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分

11 人评分

  评论区

#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;
}
麻烦各位看下哪里错了
2020-09-07 15:54:36
代码第八行,明显错误
2020-08-20 10:02:56
  • «
  • 1
  • »