Программа находит все перестановки n элементов. В функции perm() в условии пишет, что идентификатор chosen не определен. Объясните пожалуйста в чем проблема и как ее решить.
#include "pch.h"
#include <iostream>
#include <vector>
using namespace std;
int n;
void perm();
vector<int> permutation;
int main()
{
cin >> n;
bool *chosen = new bool[n+1];
perm();
delete[] chosen;
}
void perm()
{
if (permutation.size() == n) {
for (auto c : permutation) {
cout << c << " ";
}
cout << "\n";
}else {
for (int i = 1; i <= n; i++) {
if (chosen[i]) continue;
chosen[i] = true;
permutation.push_back(i);
perm();
chosen[i] = false;
permutation.pop_back();
}
}
}
Как то так
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
vector<int>v(n);
for (int i = 0; i < v.size(); i++)
v[i] = i + 1;
do {
for (const auto& item: v)
cout << item << ' ';
cout << endl;
} while(next_permutation(v.begin(), v.end()));
return 0;
}
Имя chosen
видно только в функции main
, потому что сущность с таким именем объявлена внутри нее. В другие функции, даже если они вызываются из main
, имя chosen
попасть не может. Его видимость ограничено main
.
Для того чтобы chosen
стало видно в функции perm
, нужно его "поднять" в область видимости, общую для main
и perm
. В данном случае глобальную область видимости в которой уже находятся имена n
и permutation
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
здраствуйте форумчане, суть моего вопроса состоит в том что надо разбить строку сисволом '=' из переменой env и записать в структуру block
Я начал изучать C++ ООПИ придумал вот такой пример с фабриками по добыче угля и железа
Не понимаю как реализовать QTreeView с checkboxКак обработать событие установки и снятия "галочки"
Например я получаю из очереди сообщение и хочу его разослать всем потокамЯ думал про общую память, но вроде вдруг не все потоки успеют использовать...