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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2008, 18:37   #1
Scorpil
 
Регистрация: 17.10.2008
Сообщений: 5
По умолчанию Алгоритм "нестандартной" сортировки масива

Задачка вот в чем:
Пользователь вводит число N. Нужно вывести на экран все комбинации чисел от 1 до N в алфавитном порядке.

Тоесть, например N=3. Вывести нужно следующее:

1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

Помогите, а то замучался уже совсем...
Scorpil вне форума Ответить с цитированием
Старый 13.11.2008, 13:58   #2
ivan89
Пользователь
 
Аватар для ivan89
 
Регистрация: 22.09.2008
Сообщений: 59
По умолчанию

Пользователь вводит число N. Нужно вывести на экран все комбинации чисел от 1 до N в алфавитном порядке
Код:
#include <iostream>
#include <conio.h>
int main()
{
	using namespace std;
	int n,k=1,t;
     cout<<"n:=";
	   cin>>n;

	   for(int i=1; i<=n; i++)
	   {
		 t=1;
		 while(t<=2)
		 {
                          if(t==1)
		   {
			cout<< i <<" ";
		      for(int j=1; j<=n; j++)
			 if(i!=j)
		            cout<< j <<" ";
			   
		   }
		   else if(t==2)
		   {
		      cout<< i <<" ";
		      for(int j1=n; j1>=1; j1--)
		         if(j1!=i)
		          cout<< j1 <<" ";  
		   }
		   cout<<endl;
		   t++;
		 }
	   }
	   getch();
	   return 0;
}
ivan89 вне форума Ответить с цитированием
Старый 14.11.2008, 16:40   #3
dev_il
Новичок
Джуниор
 
Регистрация: 31.10.2008
Сообщений: 2
По умолчанию

вообще можно ещё проще, если главное сделать задачу, но неважно как....в библиотеке algorithm.h есть функция next_permutation(begin, end), которая генерирует перестановку в лексикографическом порядке...

Код:
#include <iostream>
using namespace std;

int main()
{
  int n;
  cin >> n;
  int * a = new int [n];
  int i;
  for(i=0;i<n;++i)
    a[i] = i+1;
  while(next_permutation(a,a+n))
  {
    for(i=0;i<n;++i)
      cout << a[i] << " ";
    cout << endl;
  }
}
только чтобы генерировались так все перестановки, массив должен быть отсортирован...в нашем случае он уже отсортированный
dev_il вне форума Ответить с цитированием
Старый 14.11.2008, 21:29   #4
oblom
Пользователь
 
Аватар для oblom
 
Регистрация: 22.09.2007
Сообщений: 71
По умолчанию

спасибо мне тож помогло с DrawGrid
точнее с алгоритмом поиска координаты
"Пилите, Шура, пилите. Они золотые".....
oblom вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при использовании OlePropertyGet("Documents").OleProcedure("Add") в C++ Builder AleksP C++ Builder 7 11.04.2009 13:06
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует skobets Общие вопросы C/C++ 2 03.06.2008 06:51
Алгоритм "перемешивания" массива в Delphi MusicMan Помощь студентам 4 26.04.2008 21:06
Excel файл открывается не "до конца" (странички "не показываются" только серое поле) Dorvir Microsoft Office Excel 2 28.03.2008 10:03
Создаю диаграмму "Bar". Подскажите как убрать растояние между "столбами" MAcK Компоненты Delphi 11 24.10.2007 10:49