大佬,救救孩子吧(如何降时间复杂度)
查看原帖
大佬,救救孩子吧(如何降时间复杂度)
1308563
封禁用户楼主2024/9/30 14:30
#include <bits/stdc++.h>
using namespace std;

int find(vector<int>& a) {
    int n = a.size();
    int ans = 0;
    for (int j = 5; j <= n; -~j) {
        for (int start1 = 0; start1 <= n - j; -~start1) {
            for (int start2 = start1 + j; start2 <= n - j; -~start2) {
                bool flag = true;
                int temp = a[start2] - a[start1];
                for (int i = 1; i < j; -~i) {
                    if (a[start2 + i] - a[start1 + i]!= temp) {
                        flag = false;
                        break;
                    }
                }
                if (flag) {
                    ans = max(ans, j);
                }
            }
        }
    }
    return ans > 4? ans : 0;
}

signed main() {
    int n;
    cin >> n;
    vector<int> a(n);
    for (int i = 0; i < n; -~i) {
        cin >> a[i];
    }
    int cnt = find(a);
    cout << cnt << endl;
    return 0;
}
2024/9/30 14:30
加载中...