请用c++解决以下问题不允许使用动态数组只允许使用静态数组:GearsDiv2时间限制:10s 内存限制:2560MB 代码提交间隔:3分钟现在可以提交 输入文件名:GearsDiv2in 输出文件名:GearsDiv2out试题来源:TopCoder SRM 589 问题描述 Goose Tattarrattat有一个包含n个齿轮编号0到n-1的机器n个齿轮排成一个环两个啮合
题目要求给出n个齿轮的方向,并求出最小需要删除的齿轮个数,使得每个齿轮的方向与相邻齿轮的方向相反。
首先,我们需要确定每个齿轮与相邻齿轮的关系。由于齿轮是排成一个环的,所以第一个齿轮与最后一个齿轮也是相邻的。我们可以使用一个静态数组gear来保存每个齿轮的方向。
接下来,我们需要判断每个齿轮的方向是否与相邻齿轮的方向相反。如果不相反,则需要删除这个齿轮。我们可以使用一个变量count来记录需要删除的齿轮个数。
具体实现如下:
#include <iostream>
#include <string>
using namespace std;
int main() {
int n;
cin >> n;
string direction;
cin >> direction;
char gear[50];
for (int i = 0; i < n; i++) {
gear[i] = direction[i];
}
int count = 0;
for (int i = 0; i < n; i++) {
if ((gear[i] == 'L' && gear[(i+1)%n] != 'R') || (gear[i] == 'R' && gear[(i+1)%n] != 'L')) {
count++;
}
}
cout << count << endl;
return 0;
}
在这个实现中,我们使用了一个静态数组gear来保存每个齿轮的方向。在判断每个齿轮的方向是否与相邻齿轮的方向相反时,使用了模运算来处理第一个齿轮与最后一个齿轮的关系。最后,输出需要删除的齿轮个数。
这样,我们就可以用C++解决这个问题,并且只使用了静态数组
原文地址: http://www.cveoy.top/t/topic/iRb1 著作权归作者所有。请勿转载和采集!