1010: [字符串]作弊揭發者

1010: [字符串]作弊揭發者


題目描述
鑑於我市擁堵的交通狀況,市政交管部門經過聽證決定在道路兩側安置自動停車收費系統。當車輛駛入車位,系統會通過配有的攝像頭拍攝車輛畫面,通過識別車牌上的數字、字母序列識別車牌,通過連接車管所車輛信息數據庫確認車輛,進行扣費。
鬥智鬥勇的好戲一般從此處展開…
一些車主通過在停車時遮擋車牌上的一個或多個數字、字母序列,來阻礙識別系統的識別工作,以此逃避停車費用的繳納。
車主這簡直是用輕輕的一擋搞出來一個世界難題有木有?!管理是一方面,技術解決纔是王道啊。
這麼難的項目不得不交給計蒜客實驗室了。D 神負責識別顏色,E 神負責型號識別,可能的車牌範圍就這麼一點點的被縮小了。作爲實習生的蒜頭也是任務艱鉅,將已經存在車輛數據庫中的可與當前已知信息相匹配的車牌信息篩選出來,這可是整個項目的第一步啊,重要性我就不多說了,加油吧。

輸入
輸入文件的第一行包含 9 個字符的字符序列代表識別的。
其中可識別的字符已由大寫字母和數字顯示,“*”表示因爲遮擋而未被識別的字符。
輸入文件的第二行包含一個整數 n (1 ≤ n ≤ 100) —— 機動車數據庫中的牌照信息的數量。
接下來 n 行,包含相應的牌照信息,每行一個。
牌照信息爲長度爲 9 的僅包含數字和大寫字母的字符串。所有的牌照信息保證各不相同。

輸出
輸出文件的第一行爲一個整數 k (0 ≤ k ≤ n) —— 符合給定要求的牌照數。
接下來的 k 行,輸出所有可能的牌照信息。

樣例輸入

A**1MP19*
4
A001MP199
E885EE098
A111MP199
KT7351TTB

樣例輸出

2
A001MP199
A111MP199

題目解析:
此題難度不大,只需要使用string變量或者二維數組再用下循環和判斷就可以非常容易的解決了。

題解(已通過):

#include<iostream>
#include<cstdio>
#include<string.h>
#include<algorithm>
#include<math.h>
#include<string>
using namespace std;
 
int main()
{
    string x;//定義字符串變量x
    int i,j,n,cou=1,k=0;
    cin>>x>>n;
    string a[n];
    int out[n];
    for(i=0;i<n;i++){
        cin>>a[i];
    }
    for(i=0;i<n;i++){//把字符串變量x與所有輸入需要判斷的字符串數組a【n】進行對比
        for(j=0;j<9;j++){
            if(x[j]!='*'){//由於*表示未知,所以只判斷不爲*的字符
                if(x[j]!=a[i][j])
                    cou=0;//一旦遇上有一個除去*外與x中字符不同的值,把cou記作0
            }
        }
        if(cou==1)//如果把x與字符串數組a[i]中每一個對比完後,沒有出現cou==0
         {
             out[k]=i;//用out數組記錄下字符串數組a中可能時x的下標
             k++;//用k記錄下個數
         }
        cou=1;//每次循環後,把cou歸1
    }
    cout<<k<<"\n";
    for(i=0;i<k;i++){
        cout<<a[out[i]];
        if(i<k-1){
            cout<<"\n";
        }
    }
 
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章