储物柜难题c++代码
时间: 2024-03-09 07:43:13 浏览: 24
储物柜难题是一个经典的编程问题,可以用来练习数据结构和算法的应用。下面是一个简单的C++代码示例,用于解决储物柜难题:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 定义储物柜类
class Locker {
private:
vector<bool> lockers; // 储物柜状态,true表示被占用,false表示空闲
public:
Locker(int num) {
lockers.resize(num, false); // 初始化储物柜状态,默认都是空闲
}
void toggleLocker(int num) {
lockers[num] = !lockers[num]; // 切换储物柜状态
}
void printStatus() {
for (int i = 0; i < lockers.size(); i++) {
cout << "Locker " << i + 1 << ": ";
if (lockers[i]) {
cout << "Occupied" << endl;
} else {
cout << "Empty" << endl;
}
}
}
};
int main() {
int numLockers;
cout << "Enter the number of lockers: ";
cin >> numLockers;
Locker locker(numLockers);
int numStudents;
cout << "Enter the number of students: ";
cin >> numStudents;
for (int i = 1; i <= numStudents; i++) {
for (int j = i; j <= numLockers; j += i) {
locker.toggleLocker(j - 1); // 学生i按照倍数切换储物柜状态
}
}
cout << "Final locker status:" << endl;
locker.printStatus();
return 0;
}
```
这段代码实现了一个储物柜类`Locker`,其中包含了切换储物柜状态的方法`toggleLocker`和打印储物柜状态的方法`printStatus`。在主函数中,首先输入储物柜的数量和学生的数量,然后按照学生的倍数切换储物柜状态。最后打印最终的储物柜状态。