Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перестановки в антилексикографическом порядке 
:(
    Опции темы
Vampire551
Дата 19.5.2008, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 19.5.2008

Репутация: нет
Всего: нет



Пожалуйста, помогите дописать прогу. Нужно сделать так чтобы она отбирала только "хорошие" перестановки. "Хорошая" перестановка- это, если разбить ряд на 2 блока,то левая часть должна быть равна или примерно равна правой.Например:ряд-(1 2 3 4),хорошие перестановки-(1 4 2 3),(1 4 3 2),(2 3 1 4), (3 2 1 4), (2 3 4 1), (4 1 3 2 ), (4 1 2 3) вроде все smile. Эти "хорошие" перестановки нужно записывать в массив. Заранее благодарен.
Код

#include <stdio.h>
#include <conio.h>
#include<iostream.h>

#define N 4

void swap(int *a, int *b)
{
  int t;
  t=*a;
  *a=*b;
  *b=t;
}

void reverse(int * P,int m)
{
   int i=0, j=m;
   while(i<j)
   {
     swap(&P[i], &P[j]);
     i++;
     j--;
   }
}

void antilex(int * P,int m)
{
  int i;
  if(m==0)
  {
    for(i=0; i<N; i++)
    printf("%d ",P[i]);
    printf("\n");
  }
  else
  {
    for(i=0; i<=m; i++)
    {
      antilex(P,m-1);
      if(i<m)
      {
    swap(&P[i], &P[m]);
    reverse(P,m-1);
      }
    }
  }
}

void main()
{
  clrscr();
  int i;
  int P[N];
  for(i=0; i<N; i++)
  P[i] = i+1;
  antilex(P,N-1);
  getch();
}

PM MAIL   Вверх
mes
Дата 19.5.2008, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Vampire551 @  19.5.2008,  20:53 Найти цитируемый пост)
Пожалуйста, помогите дописать прогу. 

а чего не получается ? на ошупь искать что то не сильно хочется )) 


--------------------
PM MAIL WWW   Вверх
Vampire551
Дата 19.5.2008, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 19.5.2008

Репутация: нет
Всего: нет



Хех.)) Короче, я не догоняю как это сделать.))
PM MAIL   Вверх
mes
Дата 19.5.2008, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Vampire551 @  19.5.2008,  20:53 Найти цитируемый пост)
Нужно сделать так чтобы она отбирала только "хорошие" перестановки...
Короче, я не догоняю как это сделать.)) 

как понял проблема в том что надо определить хорошая эта перестановка или нет ? 
определи середину ряда. получи сумму всех чисел от начала до середины и от середины до конца (кстати как поступать в случае нечетной длины ряда ?)
и если разность этих сумм равна 0 или малому (по твоему определению) числу то запоминать ..



Это сообщение отредактировал(а) mes - 19.5.2008, 22:02


--------------------
PM MAIL WWW   Вверх
Vampire551
Дата 20.5.2008, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 19.5.2008

Репутация: нет
Всего: нет



Эх. Чет не получается у меня это сделать. Помогите пожалуйста(допишите эту прогу)  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0466 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.