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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
LastDragon
Сообщений: n/a
#1

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

19.06.2008, 20:43. Просмотров 1085. Ответов 1
Метки нет (Все метки)

Дали мне на написание отчета олимпиадную задачку.. Решение на пару строк.. Пару раз уже код переписывал ниче не получаетсо.. Максимум выводит одно правильное число .. Вот условие :


Инверсия. Пускай P{p1,…,pn} является перестановкой чисел 1, 2,..., п. Таблицей инверсий перестановки Р называют последовательность Т{t1,…,tn} в которой t[i] равно количеству элементов перестановки Р, которые стоят (у Р) левее числа i и больших числа i. Например, для перестановки Р{5, 9, 1, 8, 2, 6, 4, 7, 3} чисел (1,2,...,9) таблица инверсий будет Т{2, 3, 6, 4, 0, 2, 2, 1, 0}.
Написать программу которая при заданой таблице инверсий возобновляет перестановку.


Мож кто поможет ? .. Решение тут на пару строк.. но вот чето не получается... =((
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2008, 20:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Помогите с олимпиадной задачкой ( (C++):

Помогите с задачкой. - C++
Поместить элементы массива X в начало массива Y в обратном порядке, исключив элементы, превосходящие по абсолютной величине вводимое...

Помогите с Задачкой - C++
1. Реализовать функцию нахождения всех простых чисел в диапазоне от 1 до 101. Сгенерированные числа сохранить в массиве. Элементы массива...

Помогите с задачкой на С++ - C++
Посоветывали обратиться тут....задали в УНивере такую задачу, а я даже не имею представления как ее решать:eek: :( :( Дано...

помогите с задачкой(( - C++
в программирование 0, а задачу позарез решить надо в cи++. Народ, помогите! :'( даны n ( n max = 100) разных чисел.Найти среди них 2...

Помогите с задачкой, пожалуйста. (С++) - C++
Вообщем, программирование только началось, а вопросов куча :\ Помогите, если есть у кого-нибудь желание. Ближе к задаче: нам дан...

Помогите с простой задачкой. - C++
Есть код: #include <stdio.h> int main() { int x=2; int y; int z; x*=3+2; printf("x=%d\n", x); // x = 10

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
20.06.2008, 13:48 #2
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2008, 13:48
Привет! Вот еще темы с ответами:

Помогите с действительно простой задачкой. - C++
Дан код: /* Conditional expressions */ #include &lt;stdio.h&gt; #include &lt;iostream&gt; int main() { int x=1; int y=1; int...

Решение олимпиадной задачи (ч.2) - C++
i:= 1 j:= 257 Цикл i:= i + x; j:= j - x; x:= x - 1 выполнили 25 раз и стало i= j. Надо найти х.

Алгоритм решения олимпиадной задачи - C++
clip2net . com/clip/m121445/1353341115-clip-71kb.jpg Дело в том, что я не знаю, как лучше считать данные. То есть прочитать всю строку, а...

Оптимизация олимпиадной задачи по программированию - C++
Есть задача: Ограничение времени на тест: 5 сек Ограничение памяти на тест: 256 Мб Условие Дан массив целых чисел a1, a2, ...,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru