Другие языки программирования и технологии

Дано число. Переставить цифры так чтобы образовалось наименьшее.

В данном натуральном числе переставить цифры таким образом, чтобы образовалось наименьшее число, записанное этими же цифрами.

Язык С++.
> может кому пригодиться
Может и тебе пригодится:

#include <iostream>

using namespace std;

int main() {
    int n;
    cout << "n? ";
    cin >> n;
    int d[10] = { 0 };
    do {
        d[n % 10]++;
        n /= 10;
    } while (n != 0);
    if (d[0] != 0) {
        for (int c = 1; c < 10 && n == 0; ++c) {
            if (d[c] != 0) {
                d[c]--;
                n = c;
            }
        }
    }
    for (int c = 0; c < 10; ++c) {
        while (d[c] != 0) {
            n *= 10;
            n += c;
            d[c]--;
        }
    }
    cout << "result: " << n << endl;
    return 0;
}

Или:

#include <string>
#include <sstream>
#include <iostream>
#include <algorithm>

using namespace std;

int main() {
    int n;
    cout << "n? ";
    cin >> n;
    stringstream ss;
    ss << n;
    string s;
    ss >> s;
    sort(s.begin(), s.end());
    string::iterator i = s.begin();
    for (; i != s.end() && *i == '0'; ++i) ;
    if ( i != s.end() ) iter_swap(s.begin(), i);
    ss.clear();
    ss.str(s);
    ss >> n;
    cout << "result: " << n << endl;
    return 0;
}

ЗЫ: код лучше копировать на сайт pastebin.com, здесь он корежится и пропадает. Вместо функций из cstdlib лучше использовать аналогичные функции из algorithm
Павел Полотовский
Павел Полотовский
98 532
Лучший ответ
Загони разряды в массив, отсортируй, собери число заново.
Очевидно, надо разбить на разряды, отсортировать во возрастанию и собрать эти разряды обратно.
Afgan Abbasov
Afgan Abbasov
34 701
Пишите на почту или в асю 586178755 решу все в кратчайшие сроки)

Похожие вопросы