Мне нужна помощь в установке очень простой атаки грубой силы на набор чисел 1 = 9. Моя цель состоит в том, чтобы разрешить совет sudoko, где строка заполнена 8 номерами, так что в строке может быть только один номер. Единственный способ, которым я решил найти это, - это присвоить номер недостающей ячейке, а затем проверить ее на любой другой номер в строке. Я действительно близок к решению, но возврат всегда равен 1. Вот фрагмент кода, с которым у меня возникают проблемы: Я обновил код, чтобы он теперь добавлял все числа и вычитал их из 45, чтобы найти правый номер. Он по-прежнему не возвращает правильный номер. Он возвращает 423 (с 6 в качестве недостающего номера).Устранение неполадок с простой грубой силой
int radd1=deduct[0][0]+deduct[0][1]+deduct[0][2]+deduct[0][3]+deduct[0][4]+deduct[0] int test=0;
if (radd1==8) {
for (int control=0; control<9; control++) {
if (dash[0][control]=='_') {
empty=control;
}
}
for (int control2=0; control2<9; control2++) {
if (control2!=empty) {
test=test+dash[0][control2];
}
}
cout << test << endl;
}
Некоторое подробнее:
Все решают базируются на одном 9x9 полукокса, заполненного с номерами идти в соответствующих местах. Этот символ называется dash[9][9]
.
Шар deduct[9][9]
является дубликатом dash[9][9]
, за исключением того, что вместо фактического числа, которое идет туда, есть 1
. Это значит, что я могу добавить целую строку, и если она равна 8
, выполните мою простую грубую силу (если это правильный термин), чтобы найти окончательное девятое число. empty
- это int. Он хранит (в данном случае) номер столбца, который не имеет номера.
Пытаетесь ли вы какие-нибудь проблемы?
Если 'deduct' составляет 9 × 9, у вас есть ошибка, вы получаете доступ к' deduct [0] [9] ', что очень вероятно будет читать' deduct [1] [0] '. –
@ DanielFischer Фактически нет. Цикл 'FOR' запускается и проходит один раз в 0 и заканчивается на 8, потому что я указал' control <9' –
. Вы должны учитывать, что используете символы в массиве, и их можно использовать как целые числа, но char для '0' не совпадает с номером 0. Чтобы восстановить целые значения, вам нужно использовать 'dash [0] [control2] - '0''. – madth3