欧拉计划8之滑动固定窗口


代码演示

#include < iostream >

using namespace std;
//滑动窗口法 :定长 或不定长(双指针法) 

long long ans = -1, temp = 1, cnt; //cnt为0的计数器 

int main() {
    char num[2000];    
    FILE *fp = freopen("E:/c语言代码/文件数据/欧拉计划input8.txt", "r", stdin); //读取文件 
    for (int i = 0; i < 1000;) {
        char ch;
        fscanf(fp, "%c", &ch);
        if (ch >= '0' && ch <= '9') num[i++] = ch;
    } //输入数据 
    for (int i = 0; i < 1000; i++) {
        if (i < 13) { //13为窗口固定宽度 
            temp *= num[i] - '0';
        } else {
            //num[i]进入窗口 
            if (num[i] == '0') cnt++; //0的个数加一 
            else temp *= num[i] - '0';
            //num[i - 13] 退出窗口 
            if (num[i - 13] == '0') cnt--; //0退出窗口 
            else temp /= num[i - 13] - '0';
        }
        if (cnt == 0) ans = ans > temp ? ans : temp;
        
    }
    cout << ans << endl;
    return 0;
}

文章作者: Axieyun
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Axieyun !
评论
评论
  目录