e940 - pA. 猜單字遊戲
題目描述
題目要求模擬一個猜單字遊戲。給定一個答案字串和一系列猜測字母,每次猜測後,輸出當前猜測的結果,其中猜中的字母顯示出來,未猜中的字母顯示為星號。
解題思路
程式首先讀取答案字串 a 和猜測次數 b。使用一個布林陣列 c 來記錄每個字母是否已被猜中。然後,程式迴圈 b 次,每次讀取一個猜測字母 d。在每次迴圈中,程式遍歷答案字串 a,如果字母 a[i] 等於猜測字母 d,則將 c[i] 設置為 true,表示猜中。最後,程式輸出當前猜測的結果,如果 c[i] 為 true,則輸出 a[i],否則輸出星號 *。迴圈結束後,再次輸出最終的猜測結果。
複雜度分析
- 時間複雜度: O(n*m),其中 n 是猜測次數,m 是答案字串的長度。
- 空間複雜度: O(m),其中 m 是答案字串的長度,用於儲存布林陣列
c。
程式碼
#include <iostream>
#include <string>
using namespace std;
int main(){
cin.tie(0); ios::sync_with_stdio(false);
string a;
cin >> a;
int b,al=a.length();
bool c[al];
for(int i=0;i<al;i++)
c[i]=0;
cin >> b;
char d;
while(b--){
for(int i=0;i<al;i++)
if(c[i])
cout << a[i];
else
cout << "*";
cout << "\n";
cin >> d;
for(int i=0;i<al;i++)
if(d==a[i])
c[i]=1;
}
for(int i=0;i<al;i++)
if(c[i])
cout << a[i];
else
cout << "*";
}