習題 3 3 數數字

2021-10-17 20:46:26 字數 627 閱讀 8872

把前n(n<=10000)個整數順次寫在一起,123456789101112……,數一數0~9各出現多少次(輸出10個整數,分別是0,1,2,……,9出現的次數

看了一些網上其他**,發現其中有一些是有錯誤的。

有些**開了一些很大的陣列,比如char s[10001]來存放輸入,這裡其實至少有三個問題。

空間複雜度過大,

即使開了這麼大的空間,仍然沒有解決問題

程式效率低下

如果認真地閱讀了前面的例題和思考,就會發現,處理字元問題通常分為兩種,一種是需要用陣列儲存輸入資料,另一種不需要用陣列儲存輸入資料。

那麼回到本題,根據以上問題,一一分析,首先第乙個問題空間複雜度過大,毫無疑問,當n越來越大的時候,所需要的空間也就慢慢增大。

#include #include #include #include int count[10];

int main()

//因為這裡是單個數字,所以可以換成count[n-'0']

for(int i = 0; i < 10; i++ )

return 0;

}

習題3 3 數數字 UVa1225

演算法競賽入門經典 第2版 第3章 陣列和字串 習題3 3 數數字 uva1225 感悟。1 直接看英文原題的輸入輸出樣例。2 沒寫之前,思路就已成竹在胸了,寫下來也比較順暢,沒費什麼周折,想也沒想肯定一次ac。3 結果runtime error,靜態檢查一遍 沒有問題,重看英文題目,原來n 100...

鯧數 數字dp

設從低到高第 len 1le n 1 位的數字為 x x,考慮 x x 與後面 len len 位組成逆序對的貢獻,先考慮 x 1x 1 時的貢獻,為 len 10l enle n 10 len,其中每個數字出現的次數都相同,再考慮 x 0,9 x 0 9 貢獻變為 len 10l en x 10 ...

count 數字計數 (數字dp)

給定兩個正整數a和b,求在 a,b 中的所有整數中,每個數碼 digit 各出現了多少次。input 輸入檔案中僅包含一行兩個整數a b,含義如上所述。output 輸出檔案中包含一行10個整數,分別表示0 9在 a,b 中出現了多少次。sample input 1 99 sample output...