日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于算法竞赛入门经典3.4.2思考题题目1必要的存储量的思考

發(fā)布時間:2023/12/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于算法竞赛入门经典3.4.2思考题题目1必要的存储量的思考 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

存儲量的存在意義是什么

就是用來存儲某一種信息或者問題求解時的某一種狀態(tài),以方便程序在需要回溯信息的時候加以利用。

題目1:必要的存儲量

以下哪些可以不借助數(shù)組,那些必須借助數(shù)組?也就是一個關(guān)于求解數(shù)據(jù)和輸入數(shù)據(jù)之間的獨(dú)立性問題。

-1 統(tǒng)計個數(shù)、
-2求max,min,average、
-3 求哪兩個數(shù)最接近、
-4 求第二大的值、
-5 求方差、
-6 統(tǒng)計不超過平均數(shù)的個數(shù)

我將這類題分為兩類:
1.依賴于當(dāng)前狀態(tài)
2.依賴于(所有)輸入數(shù)據(jù)

1.依賴當(dāng)前狀態(tài)

對于第1.2.4問,只需要在輸入數(shù)據(jù)的時候讀取一次數(shù)據(jù)信息,信息的傳遞是連續(xù)性的,不需要回溯已輸入數(shù)據(jù)就可以實(shí)現(xiàn)相應(yīng)功能。
比如統(tǒng)計功能,輸入數(shù)據(jù)的同時進(jìn)行統(tǒng)計,當(dāng)輸入下一個數(shù)據(jù)時,已經(jīng)不需要再考慮前面的數(shù)據(jù)信息的影響了,因此不需要數(shù)組來額外存儲數(shù)據(jù)信息。

2.依賴于(所有)已輸入數(shù)據(jù)

以方差為例,方差的計算主要分為兩步,第一步,通過讀取輸入數(shù)據(jù)獲得平均值,第二步,通過方差公式求解方差,方差公式要用到已輸入數(shù)據(jù)X和均值μ,即第二步依賴于第一步獲取的平均值信息和輸入數(shù)據(jù)信息。平均值可以在完第一步之后即時獲得,然而在不利用數(shù)組存儲的情況下,輸入數(shù)據(jù)在輸入下一個數(shù)據(jù)時就已經(jīng)丟失了。

關(guān)于其他幾問

關(guān)于第3問,由于需要回溯之前輸入的數(shù)據(jù),以判斷兩個數(shù)的接近程度,因而需要數(shù)組的輔助,我之前看到一篇博客3.4.2 題目1 必要的存儲量說不需要數(shù)組,其中代碼只考慮到已經(jīng)輸入的前三個數(shù)據(jù)的狀態(tài),而忽視了一個問題,存在這樣一種情況,如果第四個數(shù)據(jù)和第三個數(shù)據(jù)最接近,但是由于第三個數(shù)據(jù)和前面兩個數(shù)據(jù)的接近值相比并不是最接近的而導(dǎo)致第三個數(shù)據(jù)的信息被舍棄了,這樣反而無法得到正確答案:實(shí)際上最接近的是第三個第四個數(shù)據(jù)。用 4 8 13 14這個輸入數(shù)據(jù)測試一下就知道了。

像是求第二大的值,這類問題,最大值和第二大值的關(guān)系如何理解是關(guān)鍵,像之前那些需要數(shù)組存儲的問題,一個關(guān)鍵點(diǎn)在于,它們的數(shù)據(jù)處理,我稱之為所求數(shù)據(jù)的獨(dú)立性,像是方差,它和輸入數(shù)據(jù)的關(guān)系并不獨(dú)立,多一個輸入數(shù)據(jù),方差又需要重新計算平均值,重新利用方差公式計算求解。而第二大值問題,很明顯,第二大值是相對比較獨(dú)立的,當(dāng)數(shù)據(jù)輸入后就不再依賴于之前已輸入的數(shù)據(jù)了,對于新輸入的數(shù)據(jù),要么讓它更大(等于新輸入數(shù)據(jù)或者新輸入數(shù)據(jù)比最大值大,也就是,空降一個二大王或者大王被降職當(dāng)二大王了…),要么不變(嘍啰不需要名字…),就這兩種狀態(tài)變化。最大值和二大值明顯依賴于當(dāng)前狀態(tài)就可以獲得,對于一個新輸入的值,不需要拿他和已經(jīng)輸入的數(shù)據(jù)進(jìn)行比較,只需要拿他和當(dāng)前的最大值以及二大值比較即可,無須存儲已輸入的數(shù)據(jù)信息。

#include <stdio.h> #include <limits.h> int main() {int n,max=INT_MIN,smax=INT_MIN;while(scanf("%d",&n)==1&&n){if(max<n){smax=max;max=n;}if(n>smax&&n<max)smax=n;}printf("Max:%d SecondM:%d\n",max,smax);return 0; }

總結(jié)

以上是生活随笔為你收集整理的关于算法竞赛入门经典3.4.2思考题题目1必要的存储量的思考的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。