j353 - 瀏覽網站 (Web)
題目描述
題目描述一個模擬瀏覽網站的行為。輸入包含一系列指令,指令分為三種類型:
1 y: 表示瀏覽網站y,將網站y的瀏覽次數加一。0 y: 表示清除網站y的瀏覽紀錄,將網站y的瀏覽次數設為零。2: 表示查詢目前所有網站的總瀏覽次數。
程式需要根據輸入的指令進行操作,並在收到 2 指令時輸出所有網站的總瀏覽次數。
解題思路
這題的解題思路非常直接。使用一個陣列 ct 來記錄每個網站的瀏覽次數。陣列的索引代表網站的編號,陣列的值代表該網站的瀏覽次數。
程式讀取輸入,根據指令類型進行相應的操作:
- 如果指令是
1 y,則將ct[y]的值加一。 - 如果指令是
0 y,則將ct[y]的值設為零。 - 如果指令是
2,則計算ct陣列中所有元素的總和,並輸出結果。
複雜度分析
- 時間複雜度: O(N + M),其中 N 是陣列
ct的大小 (在本例中為 101),M 是輸入指令的數量。最壞情況下,需要遍歷整個陣列ct來計算總瀏覽次數。 - 空間複雜度: O(N),其中 N 是陣列
ct的大小。程式使用一個大小為 101 的陣列來儲存每個網站的瀏覽次數。
程式碼
#include <iostream>
using namespace std;
int x,y,ct[101];
int main(){
while(cin >> x >> y){
if(x==1){
++ct[y];
}
else if(x==0){
ct[y]=0;
}
else{
int s=0;
for(int i=0;i<=100;++i){
s+=ct[i];
}
cout << s ;
return 0;
}
}
}