当前位置:首页 » 《随便一记》 » 正文

数组下标的应用——①蒜头君的数字游戏I_weixin_43906631的博客

13 人参与  2022年05月12日 12:34  分类 : 《随便一记》  评论

点击全文阅读


蒜头君有很多张写着数字的卡片,每张卡片上有一个1-10之间的整数,现在需要我们统计每张卡片多少张。

思路:
1)定义一个长度为11的数组存储卡片的信息;
数组的下标——>表示卡片上的数字;
数组元素——>表示卡片出现的次数;

int cnt[11];//定义全局变量的好处:将数组元素全部初始化为0

2)每读入一个数,就将对应的数组元素的值加一;

cin>>temp;
cnt[temp]++;

此时,cnt[1]中存储的是数字1出现的次数,cnt[2]中存储的数字2出现的次数;

完整的代码

#include <iostream>
using namespace std;
int cnt[11];
int main() {
    int n;
    cin >> n;//一共n张卡片
    for (int i = 0; i < n; i++) {
        int temp; //卡片上的数字temp
        cin >> temp;
        cnt[temp]++;//temp卡片的个数   
    }
    for(int i=1;i<=10;i++){
            cout<<i<<" "<<cnt[i]<<endl;//循环遍历输出
    }
    return 0;
}

运行
程序的运行结果
扩展 1
在原题基础上,统计出现次数最多的卡片的次数,以及卡片数。
思路
1)定义一个变量max存储最大出现次数,并将其初始化为-1;
定义一个变量index存储卡片的值;

int max=-1,index;

2)一个数的出现次数大于等于max,我们就更新max和index的值,这样就保证max中始终存储最大出现次数,index中始终存储出现次数的数中的最大值;

if(max<=cnt[i]){
	max=cnt[i];//更新max的值
	index=i;//i=temp=index
}

完整代码

#include <iostream>
using namespace std;
int cnt[11];
int main() {
    int n;
    cin >> n;
    for (int i = 0; i < n; i++) {
        int temp;
        cin >> temp;
        cnt[temp]++;
    }
    int max=-1,index;//max存储最大出现次数,index存储众数
    for(int i=1;i<=10;i++){
        if(max<=cnt[i]){
            max=cnt[i];
            index=i;
        }
    }
    cout<<max<<" "<<index;
    return 0;
}

扩展 2
蒜头君还拥有很多张写着大写字母的卡片,每张卡片上有一个A~Z之间的字母,俗话说物以稀为贵,现在我们想找出出现次数最少的字母,如果这样的字母有多个,我们只需要ASCII码最小的一个。
思路
1)相邻的大写字母的ASCII码相差1,一共26个英文字母;
定义一个长度为26的数组存储每个字母的出现次数;

int cnt[26];

cnt[0]中存储字母A出现的次数,cnt[1]存储字母B出现的次数,依次类推;
2)统计个数;

cnt[s[i]-'A']++;

3)定义变量min记录出现次数最少的字母,将其值初始化为s.size()+1,保证后续min的值可以正常更新,当然,你也可以设置一个非常大的整数

int min=s.size()+1,index;

4)如果一个数的出现次数小于min且不为0,那么就更新min和index的值,保证min中始终存储最小出现次数,index中始终存储出现最少次数的字母中ASCII码最小的一个;

for(int i=0;i<26;i++){
        if(min>cnt[i]&&cnt[i]!=0){
            min=cnt[i];
            //index=s[i];
            index=i;
        }
    }

5)index中的值表示出现次数最少的字母中最小的与字符A的ASCII码的差值,因此需要强制类型转换,才能输出对应的字母;

cout<<min<<" "<<(char)(index+'A');

完整代码

#include <iostream>
#include <string>
using namespace std;
int cnt[26];
int main() {
    string s;
    cin >> s;
    for (int i = 0; i < s.size(); i++) {
        cnt[s[i]-'A']++;
    }
    int min=s.size()+1,index;
    for(int i=0;i<26;i++){
        if(min>cnt[i]&&cnt[i]!=0){
            min=cnt[i];
            //index=s[i];
            index=i;
        }
    }
    cout<<min<<" "<<(char)(index+'A');
    return 0;
}

点击全文阅读


本文链接:http://zhangshiyu.com/post/39982.html

次数  卡片  字母  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 难渡红尘,爱恨随风去小说精彩章节免费试读_陆梨初徐慕凡陆总章节世界观揭秘篇‌
  • 黄泉情难渡爽文(叶北宸凤念安),黄泉情难渡爽文
  • [夫人她要对暗号,世子他在***]小说精彩节选试读_[舒妗月洛知珩]章节彩蛋限时释出‌
  • 全书浏览小姑子要重新养一遍自己,让我给她买百万豪车(江梦瑶林霜)_小姑子要重新养一遍自己,让我给她买百万豪车(江梦瑶林霜)全书结局
  • 人面桃花长相忆纯净版(阮雾梨闻砚辞)全书免费_(阮雾梨闻砚辞)人面桃花长相忆纯净版后续(阮雾梨闻砚辞)
  • 等风等雨等不到你现已上架(夏语栀祁墨寒许青瑶)_等风等雨等不到你现已上架
  • 别后不知君回首(程十安傅临州)_别后不知君回首
  • 顾书程江仪(第九十九次被绑架失忆后,我觉醒了+后续+结局)_顾书程江仪列表_笔趣阁(第九十九次被绑架失忆后,我觉醒了+后续+结局)
  • 野火吻过薄情玫瑰全文免费无弹窗阅读_笔趣阁_魏景辰傅雯杉傅家全文免费无弹窗阅读_笔趣阁
  • 别后不知君回首全书+后续(程十安傅临州)列表_别后不知君回首全书+后续(程十安傅临州)别后不知君回首全书+后续在线
  • 人面桃花长相忆+后续+结局(阮雾梨闻砚辞阮见微)列表_人面桃花长相忆+后续+结局(阮雾梨闻砚辞阮见微)人面桃花长相忆+后续+结局在线
  • 南风等不来候鸟结局+番外全书+后续+结局(沈南风苏雨柔)列表_南风等不来候鸟结局+番外(沈南风苏雨柔)南风等不来候鸟结局+番外全书+后续+结局在线

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1