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

Помогите с олимпиадной задачкой ( - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Передача указателей на файлы в функцию?О_о http://www.cyberforum.ru/cpp-beginners/thread9265.html
Добрый день! Возникла проблема при написании программы на структуры. Допустим у нас есть массив структур. Заполняем его и тд.. записываем в файл(бинарно). Допустим нужна функция поиска по файлу поля...
C++ Что означает #include что означает на С++ #include http://www.cyberforum.ru/cpp-beginners/thread9264.html
Рекурсия: вычислить произведение элементов массива C++
Привет! Помогите пожалуйста девушке необразованной найти ошибки в коде, а то выгонят нафиг:help: Задача такая-вычислить произведение элементов массива рекурсивным алгоритмом. Тект проги, которая...
C++ Как применить динамическую память?
Помогите пожайлуста!!!!! Как в слейдущей программе применить динамическую память????? #include <stdio.h> #include<conio.h> #define N 3 void printMatr(int m) { int i,j; for(i=0; i<N; ++i) ...
C++ Написать стек на основе одномерного массива http://www.cyberforum.ru/cpp-beginners/thread9126.html
Пробую написать стек на основе одномерного массива. Скажите что не так делаю. #include <iostream.h> #include <conio.h> #include <stdlib.h> #include <dos.h> #include <stdio.h> int sp=0, n;...
C++ задачка на Си, ай нид хелп черт, у меня ниче не получается(( помогите плиз написать эту прогу(( вот задание: проводится опрос, каждый должен заполнить анкету, указать имя, фамилию, пол, возраст и 3 любимых песни (точнее... подробнее

Показать сообщение отдельно
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
20.06.2008, 13:48
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
#include <conio.h>
int main () {
    int * P,*T,n,i,j,k,l,t;
    printf("enter length : " ) ;
    scanf("%d",&n);
    P = new int[n];
    T = new int[n];
    printf("input inversion array : ");
    for(i=0;i<n;i++) {
        scanf("%d",&T[i]);
        P[i]=i+1;
    };
    for(i=0;i<n;i++) {
        for(j=0;j<n;j++) if(P[j]==i+1) break;
        k = T[i];
        l=0;
        while(P[l]<P[j]) l++;
        while(k>0) {
            if(P[l]>=P[j])k--;
            while(P[++l]<P[j]);
        };
        t= P[j];
        P[j]=P[l];
        P[l]=t;
    };
    printf("\n");
    for(i=0;i<n;i++) printf("%d ",P[i]);
    while(!kbhit());
    return 0;
};
[/code]Добавлено через 1 минуту
Суть решения проста : расставлять циферки начиная с младшей подряд.
На каждом шаге мы знаем,что меньшие цифры стоят на своих местах,а на остальных может быть либа текущая либо большая.Прокручиваем нужное количество свободных мест и ставим на следующее текущую.Все.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru