【发布时间】:2017-12-20 14:26:44
【问题描述】:
我创建了一个函数,可以为我正在创建的游戏创建所有可能的解决方案...也许你们中的一些人知道牛牛游戏。
首先,我创建了一个函数,该函数创建最多四个整数的数字组合,并且该组合中不能有任何重复数字......就像...... “1234”是一个解决方案,但不是“1223”,因为“2”在数字中重复。在“0123”和“9999”之间总共有 5040 个没有重复数字的数字。
这是我的功能:
std::vector <std::array<unsigned, 4>> HittaAllaLosningar(){
std::vector <std::array<unsigned, 4>> Losningar;
for (unsigned i = 0; i < 10; i++) {
for (unsigned j = 0; j < 10; j++) {
for (unsigned k = 0; k < 10; k++) {
for (unsigned l = 0; l < 10; l++) {
if (i != j && i != k && i != l && j != k && j != l && k != l) {
Losningar.push_back({i,j,k,l});
}
}
}
}
}
return Losningar;
}
现在假设我有数字“1234”,这不是我想要找到的解决方案,我想从数组中删除解决方案“1234”,因为这不是解决方案......我该怎么做去做?找了好几个小时都没找到。我已经尝试过vector.erase,但我得到了关于unsigned 和其他东西的错误......还有值得一提的是猜测是字符串。
我想要做的是,从我的程序中获取一个字符串,如果它不是一个解决方案,如果它存在于vector 中,我想从向量中删除它。
这是产生猜测的代码:
std::string Gissning(){
int random = RandomGen();
int a = 0;
int b = 0;
int c = 0;
int d = 0;
for (unsigned i = random-1; i < random; i++) {
for (unsigned j = 0; j < 4; j++) {
if (j == 0) {
a = v[i][j];
}
if (j == 1) {
b = v[i][j];
}
if (j == 2) {
c = v[i][j];
}
if (j == 3) {
d = v[i][j];
}
}
std::cout << std::endl;
AntalTry++;
}
std::ostringstream test;
test << a << b << c << d;
funka = test.str();
return funka;
}
randomgen 函数只是一个函数,所以我可以得到一个随机数,然后我进入循环,这样我就可以获取向量的元素,然后得到数组的整数。
非常感谢您花时间帮助我,非常感谢!
【问题讨论】:
-
你可以简化你的 Gissning 函数不是吗? for (unsigned i = random-1; i