不要使用vector 不要使用指针 set,我是一个新手
时间: 2024-10-04 09:04:56 浏览: 24
如果你是一个刚接触编程的新手,想要避免使用向量(vector)和指针,可以考虑使用数组(array)作为数据结构,它们相对简单一些。同时,我们可以利用循环和栈(stack)来实现类似的功能,虽然效率可能会稍低,但更容易理解和掌握。
例如,你可以用一个固定的大小数组来存储未使用的卡片,每次取一个卡片放入数组的开头,然后继续处理剩余的卡片。这里是一个使用数组和栈的基本思路,用于统计组合的示例(假设我们只关心选择k个连续的卡片):
```cpp
#include <iostream>
#include <string>
int main() {
int n, k;
cin >> n >> k;
// 创建一个大小为n的数组来模拟卡片
int cards[n];
for (int i = 0; i < n; ++i) {
cin >> cards[i];
}
// 初始化一个栈用于存储已选的连续卡片
stack<int> selected_cards;
int unique_numbers = 0;
// 遍历所有可能的起始点
for (int i = 0; i <= n - k; ++i) {
// 取出k张连续的卡片
for (int j = i; j < i + k; ++j) {
selected_cards.push(cards[j]);
}
// 将选定的卡片转换为字符串,添加到unique_numbers计数
string number_str;
while (!selected_cards.empty()) {
number_str += to_string(selected_cards.top());
selected_cards.pop();
}
// 检查是否已经计算过这个数字
if (number_str.find(number_str[0]) != 0) { // 如果不是重复的数字
unique_numbers++;
}
}
cout << "总共有 " << unique_numbers << " 种不同的数字." << endl;
return 0;
}
```
在这个例子中,我们避免了向量和指针,而是用数组和栈来完成任务。不过要注意的是,这种实现方式在处理大量数据时可能会遇到性能问题,因为它的时间复杂度较高。
阅读全文