Вы можете либо сохранить столбец исходной королевы, а затем пропустить этот столбец solveQueen
. или же. создайте метод, который проверяет королеву в столбце уже и пропускает на основе этого. А потом всегда просто звоните solveQueen(1)
. Первое решение хорошо (более эффективно), если вы когда-нибудь захотите поставить 1-ю королеву. Второе лучше, если вы можете расширить это, чтобы обрабатывать несколько помещенных начальных ферзей.
Попробуйте это
[DllImport("zip4_w32.dll",
CallingConvention = CallingConvention.StdCall,
EntryPoint = "z4LLkGetKeySTD",
ExactSpelling = false)]
private extern static IntPtr z4LLkGetKeySTD();
Можно затем преобразовать результат в Строку при помощи Маршала. PtrToStringAnsi (). Необходимо будет все еще освободить память для IntPtr с помощью соответствующего Маршала. Свободный* метод.
Просто используйте 'строку' вместо 'символа константы *'.
Править: Это опасно по причине объясненный JaredPar. Если Вы не хотите свободное, не используйте этот метод.