PAT乙級1053 住房空置率

2021-10-04 11:07:26 字數 2015 閱讀 2450

在不打擾居民的前提下,統計住房空置率的一種方法是根據每戶用電量的連續變化規律進行判斷。判斷方法如下:

現給定某居民區的住戶用電量資料,請你統計「可能空置」的比率和「空置」比率,即以上兩種狀態的住房佔居民區住房總套數的百分比。

輸入格式:

輸入第一行給出正整數 n(≤1000),為居民區住房總套數;正實數 e,即低電量閾值;正整數 d,即觀察期閾值。隨後 n 行,每行按以下格式給出一套住房的用電量資料:

k e​1 e​2 … ek​​

其中 k 為觀察的天數,e​i為第 i 天的用電量。

輸出格式:

在一行中輸出「可能空置」的比率和「空置」比率的百分比值,其間以乙個空格分隔,保留小數點後 1 位。

輸入樣例:

5 0.5 10

6 0.3 0.4 0.5 0.2 0.8 0.6

10 0.0 0.1 0.2 0.3 0.0 0.8 0.6 0.7 0.0 0.5

5 0.4 0.3 0.5 0.1 0.7

11 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1

11 2 2 2 1 1 0.1 1 0.1 0.1 0.1 0.1

輸出樣例:

40.0% 20.0%

(樣例解釋:第2、3戶為「可能空置」,第4戶為「空置」,其他戶不是空置。)

1.我的做法

思路:運用到二維陣列,將所有資料都放入陣列中,再進行處理,空間複雜度比較高。

#include

#include

#include

using

namespace std;

intmain()

vec1.

push_back

(vec2)

;//將每個觀察資料放入陣列中

vec2.

clear()

;}int cnt_void =

0, cnt_may =0;

//void表示空置,may表示可能空置

for(

int i =

0; i < vec1.

size()

; i++)}

cout << fixed <<

setprecision(1

)<<

(double

)cnt_may / n *

100<<

"% "

<< fixed <<

setprecision(1

)<<

(double

)cnt_void / n *

100<<

'%';

return0;

}

總結:剛開始怎麼都通過不了,發現缺少了vec2.clear();這句話來重置vec2陣列。果然還是不夠仔細啊。

2.柳神做法

思路:不需要用到二維陣列,直接邊輸入邊統計即可。

#include

#include

#include

#include

using

namespace std;

intmain()

if(cnt > k /2)

}double maybe =

(double

)cnt_may / n *

100;

double kong =

(double

)cnt_void / n *

100;

printf

("%.1f%% %.1f%%"

, maybe, kong)

;system

("pause");

return0;

}

總結:注意作用域的問題,在第乙個for迴圈中定義的cnt可以給第二個for迴圈使用,但是相反就不行。

PAT乙級1053 住房空置率

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 在不打擾居民的前提下,統計住房空置率的一種方法是根據每戶用電量的連續變化規律進行判斷。判斷方法如下 現給定某居民區的住戶用電量資料,請你統計 可能空置 的比率和 空置 比...

PAT 乙級 1053 住房空置率

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 在不打擾居民的前提下,統計住房空置率的一種方法是根據每戶用電量的連續變化規律進行判斷。判斷方法如下 現給定某居民區的住戶用電量資料,請你統計 可能空置 的比率和 空置 比...

PAT乙級 1053 住房空置率

在不打擾居民的前提下,統計住房空置率的一種方法是根據每戶用電量的連續變化規律進行判斷。判斷方法如下 1 在觀察期內,若存在超過一半的日子用電量低於某給定的閾值 e,則該住房為 可能空置 2 若觀察期超過某給定閾值 d 天,且滿足上乙個條件,則該住房為 空置 現給定某居民區的住戶用電量資料,請你統計 ...