Ayuda problema C++
Publicado por Guillermo (1 intervención) el 27/10/2016 00:37:06
Hola, tengo que implementar un algoritmo que resuelva este problema:
P ≡ {0 < n < 10.000}
fun xxxx (int a[], int n) return int p
Q ≡ {(0 ≤ p < n) ∧ (menores(a, n, p) ∧ (¬∃j : 0 ≤ j < p : menores(a, n, j)}
donde menores(a, n, p) ≡ ∀u, w : 0 ≤ u ≤ p < w < n : a[u] < a[w]
Lo que te pide es hallar la posición P que cumple que todos los valores del vector hasta esa posición P son menores que el resto, y tiene que ser un algoritmo lineal, esto es lo que tengo pero no está bien
Por favor necesito ayuda
P ≡ {0 < n < 10.000}
fun xxxx (int a[], int n) return int p
Q ≡ {(0 ≤ p < n) ∧ (menores(a, n, p) ∧ (¬∃j : 0 ≤ j < p : menores(a, n, j)}
donde menores(a, n, p) ≡ ∀u, w : 0 ≤ u ≤ p < w < n : a[u] < a[w]
Lo que te pide es hallar la posición P que cumple que todos los valores del vector hasta esa posición P son menores que el resto, y tiene que ser un algoritmo lineal, esto es lo que tengo pero no está bien
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int resolver(const vector<int> &v) {
int maximoHastaP = v[0], p = 0;
for (int i = 1; i < v.size() - 1; i++) {
if (v[i] > maximoHastaP) {
if (v[i + 1] <= v[p])
maximoHastaP = v[i];
}
else if (v[i] <= maximoHastaP) {
p = i;
if (v[i + 1] <= maximoHastaP) p = i + 1;
}
}
return p;
}
Por favor necesito ayuda
Valora esta pregunta


0