Самое главное, что в классическом морском бое, если расставлять корабли начиная с 4-х палубного, затем два 3-х палубных, затем три 2-х палубных и четыре однопалубных, то всегда существует расстановка кораблей. Это легко доказуемо. Если вы начнёте с однопалубных, то можете попасть впросак.
Четырёхпалубный ставится выбором направления - горизонталь/вертикаль и выбор начальной клетки - всего 140 вариантов.
Помечаете занятые клетки, клетки вокруг корабля и приступаете к трёхпалубным.
Пробегаете незанятые клетки и пытаетесь проверить возможность поставить корабль по горизонтали или вертикали. Сохраняете в массив все возможные варианты, а затем выбираете один случайным образом.
Повторяете пока не будут расставлены все корабли. Доказательство существования расстановки гарантирует, что у вас всегда будет место, куда поставить корабль.