Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2013, 23:12   #1
Emily_S
Новичок
Джуниор
 
Регистрация: 16.12.2013
Сообщений: 2
Печаль Задача на чистом Си. Рекурсия.

Написать программу, которая получает все расстановки 8 ладей на шахматной доске, при которых ни одна ладья не угрожает другой.

Прошу помощи, так как только начала учить язык,и не могу осилить эту задачку.Сама к сожалению не справилась,пока совсем не разобралась в данном языке программирования. Буду очень благодарна за помощь.
Emily_S вне форума Ответить с цитированием
Старый 16.12.2013, 23:30   #2
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Тривиальная задача на рекурсию.. Только она чаще встречается с ферзями, Вам же её упростили.. Гуглите.. Или выложите хоть что-то.. тогда Вам помогут.. Удачи
Poma][a вне форума Ответить с цитированием
Старый 17.12.2013, 00:22   #3
Emily_S
Новичок
Джуниор
 
Регистрация: 16.12.2013
Сообщений: 2
По умолчанию

Код:
#include <stdafx.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream>
const int BS = 8;
bool board[BS][BS], a[8];
void pr()
int a;
{
for(int i=0; i<BS; i++)
{
for(int j=0; j<BS; j++)
if(board[i][j])
printf("*");
else
printf(".");
printf("\n");
}
}
void rec(int ii)
{
if(ii==8)
{
pr();
return;
}
for(int i=0; i<BS; i++)
if(!a[i])
{
a[i]=true;
board[ii][i]=true;
rec(ii+1);
board[ii][i]=false;
a[i]=false;
}
}
int main(int, char *[])
{
for(int i=0; i<BS; i++)
{
a[i]=true;
board[0][i]=true;
rec(1);
board[0][i]=false;
a[i]=false;
}
getch();
return 0;
}
Есть такой вариант,но в нем 6 ошибок которые мне не по силам исправить,и преподаватель говорит,что я все сделала не правильно,поэтому сразу выкладывать не стала. Если можете,помогите пожалуйста,вы моя последняя надежда)



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 17.12.2013 в 09:37.
Emily_S вне форума Ответить с цитированием
Старый 17.12.2013, 21:45   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Код:
#include <stdio.h>
#include <stdlib.h>
#define size 100
int a[size][size], q[size], n, cnt = 0;

int check (int row, int col)
{
	for (int i = 0; i < col-1; i++)
		if (q[i] == row) 
			return 0;

	return 1;
}
void put_rook (int k)
{
	if (k == n) 
	{
		cnt++; return;
	}

	for (int i = 0; i < n; i++)
	{
		q[k] = i;
		if (check(i, k))
			put_rook(k+1);
	}
		
}

int main () 
{
	scanf("%d", &n);

	put_rook(0);

	printf("%d\n", cnt);
	return 0;
}
Я не уверен в правильности.. сегодня нет времени, чтобы проверить..
Poma][a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекурсия задача из Крупника (изучаем Си) novopashinmm Помощь студентам 4 27.06.2013 12:41
Задача в паскале (рекурсия) Feil Помощь студентам 2 25.12.2009 12:04
Задача на языке Pascal. Рекурсия. (FainT) Помощь студентам 6 23.05.2009 15:45
Рекурсия - сложная задача! RomT24 Паскаль, Turbo Pascal, PascalABC.NET 5 06.05.2009 23:14