题目:
鉴于我市拥堵的交通状况,市政交管部门经过听证决定在道路两侧安置自动停车收费系统。当车辆驶入车位,系统会通过配有的摄像头拍摄车辆画面,通过识别车牌上的数字、字母序列识别车牌,通过连接车管所车辆信息数据库确认车辆,进行扣费。
而一些车主通过在停车时遮挡车牌上的一个或多个数字、字母序列,来阻碍识别系统的识别工作,以此逃避停车费用的缴纳。
现在你需要将已经存在车辆数据库中的可与当前已知信息相匹配的车牌信息筛选出来。
输入
输入文件的第一行包含 9 个字符的字符序列代表识别的。
其中可识别的字符已由大写字母和数字显示,“*”表示因为遮挡而未被识别的字符。
输入文件的第二行包含一个整数 n (1 ≤ n ≤ 1000) —— 机动车数据库中的牌照信息的数量。
接下来 n 行,包含相应的牌照信息,每行一个。
牌照信息为长度为 9 的仅包含数字和大写字母的字符串。所有的牌照信息保证各不相同。
输出
输出文件的第一行为一个整数 k (0 ≤ k ≤ n) —— 符合给定要求的牌照数。
接下来的 k 行,输出所有可能的牌照信息。
样例1
输入:
A**1MP19*
4
A001MP199
E885EE098
A111MP199
KT7351TTB
输出:
2
A001MP199
A111MP199
代码:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
string arr;
string mid;
int n;
vector<string> input;
vector<string> midput;
vector<string> output;
cin>>arr;//输入格式化车牌
cin>>n;//输入车牌数目
for(int i = 0; i<n; i++)
{
cin>>mid;//输入各个车牌号
input.push_back(mid);//保存原始车牌
midput.push_back(mid);//保存修改后的车牌
}
for(int i = 0; i<n; i++)
{
for(int j = 0; j<9; j++ )
if(arr[j] == '*')
{midput[i][j] = '*';}
}
for(int i = 0; i<n; i++)
{
if(!arr.compare(midput[i]))//比较格式化车牌和修改后的各个车牌
{output.push_back(input[i]);}//满足匹配,则保存原始车牌
}
cout<<output.size()<<endl;
for(int i = 0; i<output.size(); i++)//依次输出
{
cout <<output[i]<<endl;
}
}