C++解题:大家都喜欢坐过山车,为了让乘客游玩得更尽兴,完美的过山车赛道是必需的。我们把整个的过山车赛道分成n块,分别编号1到n,每一块都有一个娱乐值 V_i 。 已知完美的过山车赛道有两个条件: 条件1:对于每一块赛道里的编号 i 及 i+2,有 V_i 等于 V_i+2。 条件2:整个赛道中娱乐值只有两个不同的数字。 比如 3,4,3,4 就是一个完美的赛道,而 1,3,2,3 就不是,因为有三个不同的数字。而 2,3,3,2 也不是,因为对于 i 等于1, V_1不等于 V_3,没有满足条件
时间: 2023-06-08 16:09:07 浏览: 69
的赛道必须满足条件 1 和条件 2,请你编写一个函数,给定一个娱乐值列表 V,返回是否可以构造一个完美的过山车赛道。
C 代码实现:
bool perfectRollerCoaster(vector<int>& V) {
int n = V.size();
unordered_set<int> s;
for(int i = 0; i < n; i++) {
s.insert(V[i]);
}
if(s.size() != 2) {
return false;
}
int a = *s.begin();
int b = *s.rbegin();
if(count(V.begin(), V.end(), a) != n / 2 || count(V.begin(), V.end(), b) != n / 2) {
return false;
}
for(int i = 0; i < n; i += 2) {
if(V[i] != a || V[i + 1] != b) {
return false;
}
}
return true;
}
注:本代码使用 unordered_set 实现的哈希表来检查条件 2 是不是满足,通过 count 函数来统计娱乐值 a 和 b 的个数是不是 n/2,最后再遍历一遍数组,检查条件 1 是否满足即可。
相关问题
c++编程:将极坐标值转化为直角坐标值
好的,可以使用以下公式将极坐标值(r,θ)转化为直角坐标值(x,y):
x = r * cos(θ)
y = r * sin(θ)
其中,cos和sin分别为余弦和正弦函数,可以使用math库里的函数来计算,示例代码如下:
```c++
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double r, theta;
cout << "请输入极坐标值(r,θ):" << endl;
cin >> r >> theta;
double x = r * cos(theta);
double y = r * sin(theta);
cout << "直角坐标值为:" << "(" << x << "," << y << ")" << endl;
return 0;
}
```
输入示例:
```
请输入极坐标值(r,θ):
5 1.2
```
输出示例:
```
直角坐标值为:(1.77738,4.54641)
```
把下面这段Python代码改写成C++代码:
```python
def fibonacci(n):
if n <= 1:
return n
else:
return(fibonacci(n-1) + fibonacci(n-2))
```
以下是对应的C++代码:
```cpp
int fibonacci(int n){
if(n <= 1){
return n;
}else{
return(fibonacci(n-1) + fibonacci(n-2));
}
}
```