题目大意:先输入一个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;
#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);
}
}
}
}
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);
}
}
}
}