Составить максимально возможное число - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Дан список чисел, при этом некоторые могут начинаться с нескольких 0, например, 000370. Нужно составить из этих чисел одно число просто "присоединяя" друг к другу, чтобы это число было максимально возможным. Также известно, что хотя бы одно число не начинается с 0. Не знаю, как подступиться к задаче, жду помощи) Только возникла идея, добавить к каждому числу единицу слева, например, 1000370, отсортировать в порядке убывания, и затем убрать эту единицу.

Решение задачи: «Составить максимально возможное число»

textual
Листинг программы
#include <stdio.h></stdio.h>
#include <stdlib.h></stdlib.h>
#include <string.h></string.h>
 
#define STRING_COUNT 6
 
int cmp(void *ptr1, void* ptr2) {
    char **str1 = ptr1;
    char **str2 = ptr2;
    return (strcmp(*str1,*str2)<0)? 1: -1;
}
int main(void)
{
    char* mass[STRING_COUNT] = {"00045","0199","19","22","031","89"};
 
    char **tmp = malloc(sizeof(char*)*STRING_COUNT);
    memcpy(tmp,mass,sizeof(char*)*STRING_COUNT);
 
    qsort(tmp,STRING_COUNT,sizeof(char*),cmp);
 
    for(int i=0;i<string_count;++i) {=""  ="" printf("%s="" ",mass[i]);="" }="" printf("\n\n");="" char="" number[50]="" ;="" for(int="" i="0;i<STRING_COUNT;++i)" strcat(number,tmp[i]);="" printf("your="" num:="" %s",number);="" return="" 0;="" }<="" pre=""></string_count;++i)>

Объяснение кода листинга программы

  1. Подключаются необходимые библиотеки для работы со строками и сортировкой.
  2. Определяется количество строк в массиве.
  3. Создается функция сравнения для использования в функции сортировки qsort.
  4. В основной функции создается массив указателей на строки.
  5. Создается временный массив указателей на строки, в который копируется исходный массив.
  6. Временный массив сортируется по убыванию с помощью функции qsort и функции сравнения.
  7. Выводится отсортированный массив на экран.
  8. Создается пустая строка для формирования итогового числа.
  9. В цикле, с помощью функции strcat, к итоговой строке добавляются отсортированные строки из массива.
  10. Итоговое число выводится на экран.
  11. Функция возвращает 0, заканчивая работу программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.222 из 5
Похожие ответы