资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
输入n个字符串,比较这些字符串的大小并统计并按字典序输出字符串及出现个数
输入格式
输入的第一行包含一个整数n,表示字符串个数。接下来n行,表示输入的字符串。
输出格式
输出n行,每行包含一个字符串及一个整数,表示字符串及出现个数。
样例输入
5
aab
bbc
aab
sdffg
sgjklsa
样例输出
aab 2
bbc 1
sdffg 1
sgjklsa 1
数据规模和约定
30% l=1
30% l=10
20% l<=100
100% n<=1000,l<=1000
解题思路:
本题关键第一在于存储字符串,第二在于计数,我这里定义一个字符串数组c和b,b用来接收输入的数组,c用来判断,循环b数组,如果是c中没有的字符串,则放入c中,有,则不放入但是给c位置的统计加一,代码如下:
#include<bits/stdc++.h>
using namespace std;
int a[1000];
int main(){
string b[1000];
string c[1000];
int n;
cin >> n;
getchar();
int index = 0;
for(int i = 0; i < n; i ++){
getline(cin, b[i]);
}
for(int i = 0; i < n; i ++){
bool judge = false;
for(int j = 0; j <= index; j ++){
if(b[i] == c[j]){
a[j] ++;
judge = true;
break;
}else continue;
}
if(judge == false){
c[index ++] = b[i];
a[index - 1] ++;
}
}
for(int i = 0; i < index; i ++){
cout << c[i] << " " << a[i] << endl;
}
return 0;
}
ps:代码提交失败应该是蓝桥杯系统判断出错,大家可以观察结果的测试样例就能发现问题。