湖大坑爹期中考试。

本文介绍了一种算法,用于解决多个字符串中共有且出现次数最少的字符问题。通过使用二维数组跟踪每个字符串中各字符的出现次数,该算法能够有效地找出所有字符串中共有的字符及其最小出现次数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  题目大意:先输入一个n之后又n个字符串,要求输出每个字符串共有的且最小数目的字符个数,并且由ascii码从小到大输出。

  首先,定义一个二维数组,要求二维数组26位且100000位,26个分别代表26个字母。

  之后使用getchar字符,并且在吞掉的同时判断它是什么。假如第一个字符串中有一个a是a就让a[0][0]+1;如果有一个b就让a[0][1]+1;以此类推。

  之后就判断在1~n个字符串中,共有一个字母并且在每个字符串中出现的最少次数。之后就可以输出n。


这一题并不需要定义几个数组来存储你打进去的数据。


另外有一个小教训:在考试的时候还是要全身关注,不要紧张。不要有过多的杂念就好。

其次的教训就是:在做题目时要认真审题。

尽量少和同学坐一起。


#include<iostream>
#include<iomanip>
#include<string>
#include<cstring>
using namespace std;
int min(int x,int y)
{
 if(x<y) return x;
 else return y;
}
char all[26][100000];
int main()
{
 char get;
 int n;cin>>n;
 getchar();
  
 for(int i=0;i<n;i++)
 {int start=0;
 get=getchar();
 while(get!='\n')
 {
  for(int s=0;s<26;s++)
  {
   if(get==char(s+97)) all[s][i]++;
  }
  get=getchar();
 }}
 
 for(int i=0;i<26;i++)
 {int sum=0;int min1=10000;
  for(int s=0;s<n;s++)
  {
   if(all[i][s]!=0) sum++;
  }
  if(sum==n)
  {
   for(int s=0;s<n;s++){
    min1=min(min1,all[i][s]);
   }
   for(int s=0;s<min1;s++){
    cout<<(char)(i+97);
   }
  }
 }
 
 
 
 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值