c++关于数组的一个问题

求解

img

我写的有问题
就是答案不对
要求用数组


#include
using namespace std;
char a[1000005]; 
int main()
{
    char x;
    char min=CHAR_MIN;
    int zx,cnt=0;
    while(cin>>x)
    {
        if(x=='*') 
        {
            break;
        }
        a[x]++;
        cnt++;
    }
    for(int i=cnt;i>=1;i--)
    {
        if(a[i]break;
        }
    }
    cout<return 0;
}

谢谢


#include<bits/stdc++.h>
using namespace std;
int a[1000005]; 
int main()
{
    char x;
    int min=INT_MAX;
    int zx,cnt=0;
    while(cin>>x)
    {
        if(x=='*') 
        {
            break;
        }
        a[x]++;
        cnt++;
    }
    for(int i=cnt;i>=1;i--)
    {
        if(a[i]<min)
        {
            zx=a[i];
            break;
        }
    }
    cout<<zx;
    return 0;
}

本人为刚入坑的小白,不喜勿喷

该回答引用GPTᴼᴾᴱᴺᴬᴵ
根据题目描述,需要统计输入的字符中每个字符出现的次数,并且输出出现次数最小的字符出现的次数。

下面是使用数组进行实现的示例代码:

#include <iostream>
#include <cstring>
using namespace std;

const int MAXN = 256;  // 字符的种类数,ASCII码共有256个字符

int main() {
    char ch;
    int cnt[MAXN];  // 记录每个字符出现的次数
    memset(cnt, 0, sizeof(cnt));  // 初始化为0

    // 统计每个字符出现的次数
    while (cin >> ch && ch != '*') {
        cnt[ch]++;
    }

    // 找出出现次数最小的字符出现的次数
    int minCnt = 1e9;  // 初始化一个很大的数,确保能够找到更小的数
    for (int i = 0; i < MAXN; i++) {
        if (cnt[i] > 0 && cnt[i] < minCnt) {
            minCnt = cnt[i];
        }
    }

    // 输出结果
    cout << minCnt << endl;

    return 0;
}


主要思路就是定义一个大小为256的数组cnt,每输入一个字符,就把对应位置的计数器加1,最后再扫描一遍数组,找出出现次数最小的计数器的值即可。