码迷,mamicode.com
首页 > 其他好文 > 详细

知识点总结报告 2.3

时间:2018-02-04 00:36:49      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:basic   nbsp   size   2.3   搜索   计数   stdio.h   知识点   str   

知识点:枚举

枚举(Enumeration)是C的基础数据结构之一不是构造数据结构,即一一列举之意。在枚举思想就是把有限个可能全部列举出来。

枚举法的本质就是从所有候选答案中去搜索正确的解,使用该算法需要满足两个条件:(1)可预先确定候选答案的数量;(2)候选答案的范围在求解之前必须有一个确定的集合。
枚举法虽然是“暴力求解”,时空效率低,在数据量庞大时更是如此,但是枚举法简单,容易理解,在小范围内应用很收到不错的效果。
习题:Let the Balloon Rise http://acm.hdu.edu.cn/showproblem.php?pid=1004
分析:本题会给出N组测试用例,每组的第一行是m,以下是m行字符串(热气球的颜色),统计哪种颜色出现次数最多并打印该颜色。用枚举来解题。首先我们用二维字符数组存储颜色,定义一个计数用的数组,下标一一对应。然后用双层循环遍历每一行的颜色总共出现了几次,并存入计数数组中。对计数数组进行处理,找到其中最大值的下标,最后用下标输出颜色。
献上代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 1000
int FindMaxIndex(int [],int );
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        if(n==0)
            exit(0);
        int i,j,index;
        int num[MAX_SIZE]={0};
        char color[MAX_SIZE][16];
        for(i=0;i<n;i++)
            scanf(" %s",color[i]);
        for(i=0;i<n;i++)
            for(j=0;j<n;j++) {
            if(!strcmp(color[i],color[j]))
                num[i]+=1;
        }
        index=FindMaxIndex(num,n);
        printf("%s\n",color[index]);
    }
    return 0;
}

int FindMaxIndex(int num[],int n)
{
    int MAX=num[0],Index=0;
    int i;
    for(i=0;i<n;i++)
        if(MAX<num[i]) {
        MAX=num[i];
        Index=i;
    }
    return Index;
}

 

 
 
 

知识点总结报告 2.3

标签:basic   nbsp   size   2.3   搜索   计数   stdio.h   知识点   str   

原文地址:https://www.cnblogs.com/desier/p/8411205.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!