题解 | 小红背单词

小红背单词

https://www.nowcoder.com/practice/b3d0fa1c43c44e0580654cb93c1bfdb9

#include <stdio.h>
#include <string.h>
#include <stdbool.h>

int main(void) {
    int n;
    scanf("%d", &n);

    char ch[10005][11];
    for(int i = 0; i < n; i++)
        scanf("%s", ch[i]);
    
    char a[10005][11];  //存储唯一单词
    int count[10005] = { 0 };   //计算唯一单词数量
    int ans = 0;
    int a_count = 0;
    bool remembered[10005] = {false};
    for(int i = 0; i < n; i++){ //遍历ch[], 指向当前ch[];
        int idx = -1;
        for(int j = 0; j < a_count; j++){  //遍历ch[]前面的元素
            if(strcmp(ch[i], a[j]) == 0){
                idx = j;
                break;   //剪枝
            }
        }
        if(idx == -1){
            strcpy(a[a_count], ch[i]);
            count[a_count] = 1;
            remembered[a_count] = false;
            idx = a_count;
            a_count++;
        }else{
            if(!remembered[idx])
                count[idx]++;
        }
        if(!remembered[idx] && count[idx] >= ans + 1){
            remembered[idx] = true;
            ans++;
        }
    }
    printf("%d", ans);
    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务