делает явное уменьшение переменной, с которой вы перебираете, - это нет, нет. это, вероятно, ваша проблема. Это звучит как хорошее место, чтобы вернуться назад, чтобы избежать этого:)
РЕДАКТИРОВАТЬ: я видел, видел много проблем, я не знаю, с чего начать. Этот алгоритм никогда не даст вам то, что вам нужно.
Прежде всего, это может привести к проблеме взаимоблокировки, когда вы начнете заполнять ее, и вы не сможете добавить число к определенной строке / столбцу. Представьте, что у вас есть 12345 в строке 5, а затем в столбце 6. числа 6 7 8 9 .. ну, вы не можете добавить номер в строку 5, столбец 6;) увидеть проблему там ??
кроме того, у вашего кода есть несколько проблем:
изменение переменных итерации во время итерации является большой проблемой, и ее следует избегать.
один раз notSame = false; тогда так и останется до конца вашей казни.
столбцы идут по вертикали, а строки по горизонтали, так что это (1,2) - это столбец строки 1, 2 ... вы проверяете строки на первом этапе .. и столбцы на втором ..
// if bool = true loop to check columns for repeats
if (notSame)
{
for (int r = 0; r < row; r++)
{
// if repeat then genereate new random and go back row
if (grid[row, col] == grid[r , col])
{
grid[row, col] = rnd.Next(1, 10);
, которая имеет проблему сама по себе ... если вы измените номер там, вы должны были проверить все то же, что раньше!
скажу своему учителю, чтобы он пришел сюда и прочитал это;) .. Я не знаю, как еще вам помочь, этот алгоритм совершенно неверен и требует полного рефакторинга (и да, вы можете сделать это, используя итерацию, но не для, вам нужно использовать while и flags).