【发布时间】:2021-08-09 23:03:45
【问题描述】:
我在下面给出了问题链接。我想不通的是如何优化这段代码,以便我可以让这个程序在 1 秒内运行并且不会得到 TLE。
问题链接: https://codeforces.com/contest/1527/problem/A
我的代码:
#include <bits/stdc++.h>
using namespace std;
int rett(int l, int sum)
{
sum = l & (l - 1);
if (sum != 0) {
rett(l - 1, sum);
}
else {
cout << (l - 1) << endl;
}
}
int main()
{
int t, f = 0;
int x;
cin >> t;
int i = 0;
while (i < t) {
cin >> x;
int sum = 0;
rett(x, sum);
i++;
}
return 0;
}
【问题讨论】:
-
有什么建议吗?
-
你可以简单地写下每一步发生的事情,你会很快发现的。
-
顺便说一句,大多数 TLE(超出时间限制)问题是由于算法错误造成的。优化很少会得到低于时限的执行时间。
-
会调查的。
-
未定义行为(严重性:鼻恶魔):
int rett(但没有return。这在 C 中可能是合法的,但在 C++ 中会发生坏事。
标签: c++ loops recursion optimization