Форум программистов, компьютерный форум, киберфорум
Наши страницы

Все числа X с N-ым количеством неповторяющихся цифр - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как правильно прервать/возобновить цикл http://www.cyberforum.ru/cpp-beginners/thread261131.html
Такая вот проблема: есть часто встречающаяся функция ввода вещественного массива (как правило, большого). При вводе не цифры приходится все начинать сначала, то есть, необходимо ввести проверку на...
C++ Многопоточность (вычисление корня квадратного уравнения, используя несколько независимых потоков) Уважаемые программисты! Сможет ли кто-нибудь хотя бы примерно объяснить, как реализовать, например, вычисление корня квадратного уравнения, используя несколько независимых потоков. Программа должна... http://www.cyberforum.ru/cpp-beginners/thread261121.html
многомерные массивы C++
1.Даны прямоугольные матрицы А та В размерностью NхM. Вычислить элементы матрицы С по формуле 2.Дана прямоугольная матрица А размерностью NхM. Распечатать суму элементов каждого столбца и каждой...
Прямая и окружность C++
Есть прямая, заданая уравнением Ax+By+C=0 И окружность с координатами центра и радиусом Нужно найти координаты точек пересечения если таковы существуют. Находил решения, если центр окружности...
C++ Массив, расположение элементов по усовию http://www.cyberforum.ru/cpp-beginners/thread261085.html
#include <cstdlib> #include <iostream> #include <cmath> #include <clocale> using namespace std; int main(int argc, char *argv) { setlocale (LC_CTYPE, "rus"); //Условие: //Преобразовать...
C++ Файлы: отобразить список студентов с указанием среднего балла Очень прошу помощи. Во входном файле размещены данные в формате: <Фамилия студента 1> <оценка 1> <оценка 2> <оценка 3> <Фамилия студента 2> <оценка 1> <оценка 2> <оценка 3> ... <Фамилия... подробнее

Показать сообщение отдельно
Day
1159 / 964 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
21.03.2011, 15:42
Вызов принят!
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
char c[10];
for(i=1, k=1; i<n; i++) k *= 10;
kend = k*10;
for(i=k; i<kend; i++) {
  memset(c, 0, 10);
  m = i;
  while(m!=0) {
     cc= m%10;
     if (c[cc]) break;
     c[cc] = 1;
     m /= 10;
  }
   if (m!=0) continue;
   printf("%d\n", i);
}
Числа могут большие, их лучше делать как long. int не на всех платформах достаточно велик.
А вообще-то мне этот алгоритм не нравится. Слишком много пустых прогонов.
Может быть пойти другим путем - комбинаторным.
Генерировать перестановки из n элементов, потом сгенерить все монотонные инъекции n элементов в
множество { 0..9 }.
Или даже сразу генерить все инъекции.
Но это уже другая задача.
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.