车牌统计 C++/C

车牌统计

时间限制:1秒 内存限制:128M

题目描述

小计喜欢研究数字,他手记了N块车牌,想研究数字0~9中某两个数字相邻出现使用在车牌上的次数。

比如:68出现在100块车牌上、44出现在0块车牌上。

由于车牌太多希望你变成帮助他完成研究,并输出最多出现的车牌数。

输入描述

第1行,一个整数N,范围[1.. 100000];

下面有N行,每行是大写字母和数字组成的字符串,长度不超过10。

输出描述

某两个数字相邻出现在车牌的最多数

样例

输入

4
YE5777
YB5677
YC8367
YA77B3

输出

3

 

代码在平台测试为错误50%,不知道哪里错了,请指点

#include<iostream>
#include<string>
using namespace std;
struct node{
	string a;
}c[100001];
int main(){
	int n,cnt[11]={0};
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>c[i].a;
		for(int j=0;j<c[i].a.size();j++){
			if(c[i].a[j]>='0'&&c[i].a[j]<='9'){
				cnt[c[i].a[j]-'0']++;
			}
		}
	}
	int maxcnt=0,max=-1999,count[100001];
	for(int i=0;i<=9;i++){
		if(cnt[i]>max){
			max=cnt[i];
			maxcnt=i;
		}
	}
	char a=maxcnt+'0';
	for(int i=0;i<n;i++){
		for(int j=0;j<c[i].a.size();j++){
			if(c[i].a[j]==a){
				count[i]++;
			}
		}
	}
	max=-1999;
	for(int i=0;i<n;i++){
		if(max<count[i]){
			max=count[i];
		}
	}
	cout<<max;
	return 0;
}

 

没看懂你的思路。我的想法是定义一个大小为100的整数数组,分别统计从00到99的两个数字出现的车牌数 车牌进行遍历,找出所有相邻都是数字的两位数,对应的统计数加1即可。注意,同一车牌要避免重复数累加,如777,就只能给77加1个车牌计数