这段代码请帮我翻译成python语言:#include <iostream> #include <vector> using namespace std; bool fun(int n, vector<int>& nums) { vector<bool> dp(n + 2, false); dp[0] = true; dp[1] = true; for (int i = 1; i <= n; ++i) { if (i - 1 - nums[i - 1] >= 0) { dp[i] |= dp[i - 1 - nums[i - 1]]; } if (i + nums[i] + 1 <= n + 1) { dp[i + nums[i] + 1] |= dp[i]; } } return dp[n + 1]; } int main() { int n; cin >> n; vector<int> a(n); for (int i = 0; i < n; ++i) { cin >> a[i]; } if (fun(n, a)) { cout << "YES"; } else { cout << "NO"; } return 0; }
时间: 2024-01-17 16:03:17 浏览: 65
以下是将 C++ 代码翻译成 Python 代码后的结果:
```python
def fun(n: int, nums: List[int]) -> bool:
dp = [False] * (n + 2)
dp[0] = True
dp[1] = True
for i in range(1, n + 1):
if i - 1 - nums[i - 1] >= 0:
dp[i] |= dp[i - 1 - nums[i - 1]]
if i + nums[i] + 1 <= n + 1:
dp[i + nums[i] + 1] |= dp[i]
return dp[n + 1]
if __name__ == "__main__":
n = int(input())
a = list(map(int, input().split()))
if fun(n, a):
print("YES")
else:
print("NO")
```
主要的翻译如下:
1. 使用 Python 的列表(list)代替 vector。
2. 将函数参数类型和返回值类型注明。
3. 将 `using namespace std` 删除。
4. 将 `cin` 和 `cout` 改为 `input` 和 `print`。
5. 将 `int* nums` 改为 `List[int]`。
阅读全文