github
因為資料很小,所以不需要做什麼優化。
其實題目的重點就在於如何讀入資料以及如何將讀入的資料處理成令人愉悅的形式,另外還有一些需要注意的小地方,如負數的判斷、均值個數的判斷等。
關於如何讀入資料,可以用gets或fgets將資料作為字串整行讀進來,要注意的是以下第乙個資料k後的回車也會被讀入,所以要多讀一次。不過因為gets不太安全,所以新標準c11中把它拋棄了。。vs中gets被預處理為gets_s,用法為gets_s(變數名,size)。或者改用fgets也可以。fgets用法為fgets(變數名,size,檔案),如果是控制台中的,檔案就用stdin。
關於如何處理讀入的資料,其實處理字串的問題平時就經常碰到,而且這次的計算器中也有類似的,就是在棧運算中要把表示式的數字單獨挑出來。我用的方法,是在判斷當當前字元的ascll碼值介於'0'與'9'之間時,進行迴圈累加,部分**如下:
while ((c[i] >= '0') && (c[i] <= '9'))
關於負數的判斷,其實不需要對負數和正數進行分類,只要設定乙個初始值為1的變數,在進入數字判時,對其前一位的符號進行判斷。如果是負數,則將變數值設為-1,否則不變,最後再與篩出來的數相乘就行。
還有就是需要求均值的個數要注意一下。
#include#includeusing namespace std;
int main()
j++;
a[j] = t*m;
}i++;
} if ((j == 0) && (a[0] == 100)) break;
j++;
s = 0;
if (j > n)
else
}return 0;
}
如果還有其他需要,那再補充。 PTA 5 3 樹的同構 理解遞迴
難點 遞迴函式的實現 int isomorphic tree r1,tree r2 1.由於首先在一行中給出乙個非負整數n,考慮到n 0時root 1 即表示根節點找不到,注意root!0的原因是題目預設從0開始作為下標 2.該函式傳入的引數可能為null的原因 其一,當n 0時,根節點為null ...
USACO 5 3解題報告
題目翻譯 搜尋,以桶的數量,桶的數量上限,剩餘牛奶量為參量進行搜尋。乙個桶可以使用c 剩餘牛奶量 桶的容量次,分別對使用1 c次該桶的情況進行搜尋 同時,但凡出現桶的容量大於當前答案便進行剪枝。題目翻譯 插入新視窗時,將新視窗的高度置於當前最小 置頂時,將視窗的高度置於當前最小 置底時,將視窗高度置...
pta 5 3 紅色警報 25分 並查集
5 3 紅色警報 25分 戰爭中保持各個城市間的連通性非常重要。本題要求你編寫乙個報警程式,當失去乙個城市導致國家被 為多個無法連通的區域時,就發出紅色警報。注意 若該國本來就不完全連通,是 的k個區域,而失去乙個城市並不改變其他城市之間的連通性,則不要發出警報。輸入格式 輸入在第一行給出兩個整數n...