【Day 15】Function - Practice 1

前言
其实分享我写题目的过程也算是一种自我检讨,所以使用的方法可能不会是最完美的,还请各读者多多包涵...

题目


输入输出格式

sol.
这题题目有点难用文字看懂,我写的时候想超久,不过可以画成一个表格来看,例如我们输入


此为n=2的情况,每一次输入都要判断 n = 2、3、4、5、6 等五种情况的 MAPE 并选出最小值。

pseudocode
输入periodCutsale表示一期的资料
建立阵列sales存取各期资料、MAPEarray存取n = 2、3、4、5、6时的 MAPE、ansArray存取最後要输出的答案。

我在这边使用的方法为建立一个函数判断完各种情况的MAPE後再回到main function,不过我认为这不是最好的方法。 // 注1

void MAPE(int windowSize, int periodCut, const int sales[], int MAPEarray[], int ansArray[]);

宣告变数 total、now、min,分别代表 https://chart.googleapis.com/chart?cht=tx&chl=%5CSigma%20%5Cfrac%7BXt-ft%7D%20%7BXt%7D 、现在的加总、目前为止的最小 MAPE 值。

for i in range n
    total = 0.0    // 初始化
        for j in range j=i ~ periodCut
            now = 0.0    // 初始化
                for k in range j-i ~ k<j
                    now += 第k期的资料 / float(i)    // 将i转换为小数型态,除出来才会是小数
                    now += (第j期的资料 – now) / 第j期的资料
                    now 取绝对值
                    total += now

    将 (total/(periodCut – i) * 100) 转换为int,并插入 MAPEarray
    if 新加进去MAPEarray的这个数值 > min
        min = 新加进的数
        WindowSize = i
        并将widowSize, min加入ansArray

接着回到main function中直接输出答案

注1:

float MAPE(int indowSize, int PeriodCut, const int sales[]);

此函数所回传的值为 n = 2 ~ 6 各情况的 MAPE,这个函数的工作基本上与前面void MAPE函数无异,不过将最後比 MAPE 大小的部分移至 main function 中做。

在 main function 中跑一个 for 回圈:

for n = 2 ~ 6
    呼叫MAPE函数
    回传值有没有 > 目前最小的MAPE

最後输出答案

<<:  Day27,Kubesphere 体验

>>:  Day27:Backtracking -回溯法

学习javascript前...CSS1

现在来学习CSS 如果说 HTML 是用来处理主要网页结构,CSS 就是来处理网页细节的。负责美化跟...

全球付虚拟信用卡被盗刷余额

全球付Globalcash是虚拟信用卡,支持Visa/MasterCard。为了自己账户的安全,在境...

Day 23 K-平均演算法 K-Means

介绍: k-平均演算法(英文:k-means clustering,以下简称为 k-means )是...

Python - Python SimpleHTTPServerWithUpload 参考笔记

Python - Python SimpleHTTPServerWithUpload 参考笔记 参考...