5月30日,每日20行。

mywidget.h

#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QWidget>

namespace Ui {
class MyWidget;
}

class MyWidget : public QWidget
{
    Q_OBJECT

public:
    explicit MyWidget(QWidget *parent = 0);
    ~MyWidget();

private:
    Ui::MyWidget *ui;

};

#endif // MYWIDGET_H

main.cpp

#include "mywidget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MyWidget w;
    w.show();

    return a.exec();
}

mywidget.cpp

#include "mywidget.h"
#include "ui_mywidget.h"
#include <QDialog>

MyWidget::MyWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::MyWidget)
{
    ui->setupUi(this);
    QDialog * dialog = new QDialog(this);
    dialog->setModal(true);
    dialog->show();
}

MyWidget::~MyWidget()
{
    delete ui;
}

这里写图片描述

可以使用滑动窗口的思想来解决这个问题,具体步骤如下: 1. 创建一个长度为4的窗口,初始值为第一天到第四天的降水量。 2. 从第五天开始遍历每一天的降水量,将窗口向右滑动一位,同时将新的一天的降水量加入到窗口中。 3. 判断窗口中的降水量是否连续4天大于4.4mm,如果是,记录下当前期为结果。 4. 重复步骤2和3,直到遍历完所有期为止。 下面是代码实现: ```python data = [(1970,3,1,5),(1970,3,2,4),(1970,3,3,2),(1970,3,4,5),(1970,3,5,6),...,(2010,6,28,7),(2010,6,29,9),(2010,6,30,3)] # 假设数据已经按时间顺序排好 window = [] # 窗口 result = {} # 结果 for i in range(len(data)): # 加入新的一天的降水量 window.append(data[i][3]) # 如果窗口长度为5,将第一天的降水量移除 if len(window) == 5: window.pop(0) # 判断窗口中的降水量是否连续4天大于4.4mm if len(window) == 4 and all(x > 4.4 for x in window): year = data[i][0] month = data[i][1] day = data[i][2] - 3 # 因为是从31开始计算的,需要减去3天 result[year] = (month, day) print(result) ``` 输出结果为一个字典,键为年份,值为一个元组,元组中第一个元素为份,第二个元素为子(从31开始算)。例如,输出结果为 `{1970: (3, 4), 1971: (3, 9), ...}` 表示1970年的首个连续4天大于4.4mm的降水出现在34,1971年的首个连续4天大于4.4mm的降水出现在39,以此类推。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值