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

Поиск монотонной подпоследовательности - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Посмотрите где ошыбка?? http://www.cyberforum.ru/cpp-beginners/thread271511.html
#include<cstdio> #include<cstdlib> #include<string> using namespace std; int main(){ FILE* f = fopen("file.txt","r"); char c=0; while(!feof(f)){ string s = "";
C++ Преобразование строки в формулу Ребят, скажите пожалуйста, есть ли в С++ функция, переводящая строку с формулой в формулу? И если нет, то как бы можно было это реализовать? http://www.cyberforum.ru/cpp-beginners/thread271497.html
Частные производные C++
Ув. експерты. ТАкое дело, у меня в программке нужно вычислить коэффециенты по формуле на картинке. А как это сделать даже не представляю. ПОмогите функции произвольные, ну к примеру там cos(x) и sin(x). Есть прога на паскале, может поможет. program Newton; uses wincrt; var x,y,f1,f2,a11,a12,a21,a22,d:real; i:integer; begin writeln(' Vvedite nachalnie priblizheniya x i y: ');
C++ Не пойму где ошибка
Всем привет, вот решил написать простенький класс для работы с интернетом и выскакивают какие-то ошибки, не пойму в чем дело, вот эти ошибки: Run-Time Check Failure #3 - The variable 'szData' is being used without being initialized. Первый этап обработки исключения в "0x77c370f2" в "tfbti_lib_AP.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc". Необработанное исключение в...
C++ Ошибку помoгите найти http://www.cyberforum.ru/cpp-beginners/thread271477.html
sorry
C++ Постройка бин. дерева помогите, не строится дерево #include "stdafx.h" #include <iostream> #include <Windows.h> using namespace std; struct tree { int m; tree* l; подробнее

Показать сообщение отдельно
gudzon
0 / 0 / 0
Регистрация: 07.03.2011
Сообщений: 7
07.04.2011, 00:11  [ТС]     Поиск монотонной подпоследовательности
Спасибо за помощь, конечно, но если б мне надо было найти длину максимальной монотонной последовательности из подряд стоящих элементов, то я б помощи и не просил

Как я понял, мне надо найти саму подпоследовательность, а это куда сложнее...

Я, кстати, допилил свой код до по крайней мере более-менее работоспособного состояния, но при его его "кривизна" и нерациональность видна даже невооруженным глазом:
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <iostream>
#include <fstream>
using namespace std;
template <class T> void Max_mon_subseq(T *b, int n){
    int count1 = 0, count2 = 0, max1 = 0, max2 = 0;
    const int N = 10;
    T subseq1[N][N];
    int mas1[N];
    int k = 0, l = 1;
    for (int i = 0; i < N - 1; i++){
        if (b[i] <= b[i+1]){
            subseq1[k][l] = b[i];
            count1++;
            subseq1[k][0] = count1;
            if (max1 < count1)
                max1 = count1;
            l++;
        }
        else{
            count1 = 0;
            k++;
            l = 1;
        }
        subseq1[k][l] = b[i+1];
    }
    T subseq2[N][N];
    int mas2[N];
    k = 0;
    l = 1;
    for (int i = 0; i < N - 1; i++){
        if (b[i] >= b[i+1]){
            subseq2[k][l] = b[i];
            count2++;
            subseq2[k][0] = count2;
            if (max2 < count2)
                max2 = count2;
            l++;
        }
        else{
            count2 = 0;
            k++;
            l = 1;
        }
        subseq2[k][l] = b[i+1];
    }
    int max_1 = INT_MIN, max_2 = -999, max;
    int x1, x2, x;
    bool flag;
    for (int i = 0; i < N; i++){
        if (subseq1[i][0] > max_1){
            max_1 = subseq1[i][0];
            x1 = i;
        }
    }
    for (int i = 0; i < N; i++){
        if (subseq2[i][0] > max_2){
            max_2 = subseq2[i][0];
            x2 = i;
        }
    }
    if (max_1 > max_2){ max = max_1; flag = true; x = x1;}
    else {max = max_2; flag = false; x = x2;}
    if (flag == true){
        for (int i = 1; i <= subseq1[x][0]+1; i++)
            cout << subseq1[x][i] << " ";
        cout << endl;
    }
    else {
        for (int i = 1; i <= subseq2[x][0]+1; i++)
            cout << subseq2[x][i] << " ";
        cout << endl;
    }
}
int main(){
    setlocale(LC_ALL, "Rus");
    const int n = 10;
    int *mas_i = new int [n];
    ifstream fin("input.txt");
    for (int i = 0; i < n; i++)
        fin >> mas_i[i];
    Max_mon_subseq(mas_i, n);
    delete [] mas_i;
    system("PAUSE");
}
 
Текущее время: 13:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru