社区讨论
关于时间复杂度
学术版参与者 6已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @m4ytw33k
- 此快照首次捕获于
- 2024/12/22 07:46 去年
- 此快照最后确认于
- 2025/11/04 12:30 4 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define maxn 2000010
#define mod 10000000007
#define pair pair<int, int>
#define make make_pair
int n;
int a[5010];
inline long long read() {
long long x = 0, f = 1;
char ch = getchar();
while (ch < '0' || ch > '9') {
if (ch == '-')
f = -1;
ch = getchar();
}
while (ch >= '0' && ch <= '9')
x = x * 10 + ch - '0', ch = getchar();
return x * f;
}
void write(long long x) {
if (x < 0)
putchar('-'), x = -x;
if (x > 9)
write(x / 10);
putchar(x % 10 + '0');
return;
}
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
int ans = -1;
for (int i = 1; i <= n; i++) {
for (int d = 1; d <= n - i; d++) {
int len = 1;//最大长度
for (int j = i; j <= n - d; j += d) {
if (a[j] != a[j + d]) break;//不满足就取消遍历。
else len++;
}
ans = max(ans, len);
}
}
cout << max(1, ans);//为了防止 n = 1 的情况,因为这样子 ans = -1
return 0;
}
请问代码复杂度是否是 。
回复
共 6 条回复,欢迎继续交流。
正在加载回复...