El Problema de las Vacas

Slides:



Advertisements
Presentaciones similares
Introducción a C++ Sistemas Operativos
Advertisements

Complejidad Computacional
Complejidad Computacional
NIM.
ALUMNO: LEONODAS TEJADA BALDARRAGO GRADO: TERCERO
Ordenamiento de Arreglos
Abstracción de Datos Arrays.
PBN © Jaime Alberto Parra Plaza CLASE 8 TALLER: INSTRUCCIONES DE TRANSFERENCIA DE DATOS.
8 Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Luis Hernández Yáñez Facultad de Informática Universidad.
Ejemplo de Programa C++
Listas enlazadas c++ Prof. Franklin Cedeño.
LOGROS DEL PERÍODO Utiliza de forma correcta las funciones para entrada y salida de datos en c++. Utiliza los elementos básicos de un programa en c++.
INFORMATICA I Funciones CLASE 13.
Prof. Franklin Cedeño. FUNCIONES EN C++ Cuando tratamos de resolver un problema, resulta muy útil utilizar la filosofía de “divide y vencerás”. Esta estrategia.
Estructuras de control
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Implementación de Listas
Introducción a la Computación
SOBRECARGA DE FUNCIONES
El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño.
Funciones Computación.
Sincronización de Procesos Introducción a Semáforos
Estructuras de repetición
Introducción a clases Programación Orientada a Objetos.
Cont. Arbol Binario de Búsqueda (2). Sobre los recorridos Las versiones recursivas de los recorridos son costosas debido a la gran cantidad de llamadas.
LIA. SUEI CHONG SOL, MCE.. #include void main() { float N1,N2,N3,SUMA; cout>N2;
Public class MiClase { public static int tmp = 123; // miembro variable public static final double PI = ;// miembro constante public float.
Matemáticas Acceso a CFGS
Introducción a la Computación
Ejemplo Supongamos que queremos realizar un sistema que trabaje con figuras geométricas planas. El sistema debe poder mostrar información de una figura.
Sección 5-2 Estructuras de Control de Decisión Expresiones Lógicas.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Slide 3- 1.
Programación III Clase 07 Funciones.
Arreglos.
Programación III Clase 06 Funciones.
ESCRIBE TUS DATOS. Escribe la oración vocacional LAS SIGUIENTES DIAPOSITIVAS, SON SOLO UN EJEMPLO DE COMO PUEDEN ORGANIZAR EL CALENDARIO, NO NECESARIAMENTE.
1 3Tablas o matrices 3.1. Concepto Las tablas corresponden al concepto matemático de matriz. Todos sus elementos deben ser del mismo tipo y se accede a.
Elaborado por Fernando Torre - Universidad Simón Bolívar ARREGLOS CI Computación I Universidad Simón Bolívar Dpto. de Computación y Tecnología de.
Algoritmos para Ordenar datos
TABLAS Definición. El tipo tabla permite definir objetos formados por un conjunto de elementos del mismo tipo. Ejemplos. El tipo tabla se utiliza para.
Programación III Clase #04 Estructuras de Control.
Ministerio de Educación Instituto Profesional y Técnico de Veraguas
@ Angel Prieto BenitoMatemáticas Acceso a CFGS1 VALOR DE UN DETERMINANTE ( y II ) Bloque I * Tema 031.
@ Angel Prieto BenitoMatemáticas Acceso a CFGS1 INTERÉS SIMPLE Bloque I * Tema 036.
R.A. 1.1 Selecciona a proveedores de bienes y servicios de acuerdo con normas y políticas establecidas.
Estructuras de Control.
Teoría de Sistemas Operativos Sincronización Procesos Departamento de Electrónica 2º Semestre, 2003 Gabriel Astudillo Muñoz
Introducción a la Programación
Multiplicación de matrices
ESTADÍSTICA.
Trazado. 1 Intercambio sin error #include void intercambio(int *, int *); /* prototipo */ main(){ int a=1,b=2; printf("a=%d b=%d\n",a,b); intercambio(&a,&b);
SPSS  Si deseamos comparar por grupos diferentes y hacer tablas, Por ejemplo por genero(hombres y mujeres) 2.
FATs Cecilia Hernández FAT (File Allocation Table) Orígenes 1970s con MS-DOS Versiones : FAT12 Con original MS-DOS, 1970s FAT16 Con MS-DOS 2-3-4,
SUMA Y RESTA DE ENTEROS Se aplica ley de signos a aquellos números que están antecedidos por dos signos, (-5) + (-2) = = Se agrupan.
TE INVITO A JUGAR PISTAS El sudoku se presenta normalmente como una tabla de 9 × 9, compuesta por subtablas de 3 × 3 denominadas "regiones" (también.
INTRODUCCIÓN AL LENGUAJE C++. Instrucciones Temas.
Apuntes Matemáticas 2º ESO
tabla // tabla sumar del 7, del 0 al 9
“Análisis y Diseño de Algoritmos” 2a Entrega, Programa 6 Centro de Investigación y Estudios Avanzados del IPN Samuel Garrido Daniel 15-Abril-2004 México,
Por ejemplo: void funcion1(int a, int b=0, int c= 1); void funcion2(int a=1, int b, int c); int funcion1(int a, int b=0, int c=1);... funcion1(12, 10);
ESTRUCTURAS LINEALES “LA PILA”
APROXIMACIÓN DE NÚMEROS REALES
ESTRUCTURAS DE DECISION MULTIPLE
LENGUAJE DE PROGRAMACIÓN
Programación Aplicada de Computadoras Lección #4 – Estructuras de Decisión Prof. Antonio F. Huertas.
@ Angel Prieto BenitoApuntes de Matemáticas 1º ESO1 U.D. 9 * 1º ESO ECUACIONES.
ARREGLOS Por: Astaroth.  En la clase anterior vimos que c++, es un mundo de cajas, bien hoy hablaremos de una caja un tanto particular “vagoncin” el.
Tema – 5 Construcciones condicionales Introducción En un programa es usual ejecutar unas instrucciones u otras en función de unas condiciones especificadas.
2 5 OM THALES EL ROBOT. 2 5 OM THALES Solución Problema 1: EL ROBOT En la empresa del profesor Thayton se fabrican 3 clases de robots, los alfa (α), los.
 Dos magnitudes son directamente proporcionales cuando al multiplicar o dividir una de ellas por un número, la otra queda multiplicada o dividida por.
Transcripción de la presentación:

El Problema de las Vacas Cesar Liza Avila

Enunciado Se tienen 2 vacas que deben alimentarse. Se coloca bloques de pasto en fila para alimentarlas. Las vacas solo pueden comer el pasto que se encuentra en uno de sus extremos La primera de ellas, una vaca inteligente desea aplicar una estrategia que le permita comer mas pasto. La segunda come el bloque de pasto mas grande que se encuentra en uno de los extremos. Implemente la estrategia de la 1ra vaca. . . . César Liza Avila

La vaca 1, tiene dos alternativas Sea Tabla(i, j) la cantidad de pasto que puede comer la vaca 1 cuando empieza a comer con bloques entre i hasta j. i, i+1, i+2, . …..…, j-2, j-1, j La vaca 1, tiene dos alternativas 1) Come pi y luego come lo que pueda comer entre lo que queda Pero que le queda? Pues si pi+1>pj, la vaca 2 come pi+1, dejando tabla(i,j) = pi + tabla(i+2, j) i, i+1, i+2, . … . . …… , j-2, j-1, j Pero si pi+1<pj, la vaca 2 come pj, dejando: tabla(i,j) = pi + tabla(i+1, j-1) i, i+1, i+2, . … . . …… , j-2, j-1, j César Liza Avila

2) Come pj y luego come lo que pueda comer entre lo que queda Pero que le queda? Pues si pi>pj-1, la vaca 2 come pi, dejando tabla(i,j) = pj + tabla(i+1, j-1) i, i+1, i+2, . … . . …… , j-2, j-1 j Pero si pi<pj-1, la vaca 2 come pj-1, dejando: tabla(i,j) = pj + tabla(i, j-2) i, i+1, i+2, . … . . …… , j-2, j-1 j César Liza Avila

, Condición Base: Si n=2 bloques tabla(i, i+1) = max(pi, pi+1) Si pi>pj-1 pj + tabla(i+1, j-1) Si pi+1>pj pi + tabla(i+2, j) tabla(i,j) = max Si pi+1<pj pi + tabla(i+1, j-1) Si pi>pj-1 pj + tabla(i, j-2) , César Liza Avila

void llenaTabla(int n, int tabla[ ][MAX]) { int i,j; for (i=0; i<n; i++) for (j=0; j<n; j++) tabla[i][j] = 0; } void impTabla(int tabla[][MAX], int n) { int i, j; cout<<" "; cout<<setw(5)<<i; cout<<endl<<endl; { cout<<"i="<<i<<" "; cout<<setw(5)<<tabla[i][j]; cout<<endl; # include <iostream.h> # include <iomanip.h> #define MAX 100 #define max(a,b) ((a)>(b))?(a):(b) int vacas(int P[], int n); void llenaTabla(int n, int tabla[][MAX]); void impTabla(int tabla[][MAX], int n); void main(void) { int P[ ]={2, 2, 1, 5, 3, 8, 7, 3} ; cout<<"Si la 1ra vaca es inteligente come:“ <<vacas(P, 8)<<endl; } César Liza Avila

int vacas(int P[ ], int n) { int i; int pi, pj; int tabla[MAX][MAX]; llenaTabla(n, tabla); // no es necesario for(i = 0;i< n-1; i++) tabla[i][i+1]= max (P[i], P[i+1]); for(int d=3; d<n; d=d+2) for(int i=0; i<n-d; i++) { int j=i+d; if( P[j]> P[i+1]) pi = tabla[i+1][j-1]; else pi = tabla[i+2][j]; if (P[i]< P[j+1]) pj = tabla[i][j-2]; else pj = tabla[i+1][j-1]; tabla[i][j] = max (P[i] + pi, P[j] + pj); } impTabla(tabla, n); // no es necesario return tabla[0][n-1]; César Liza Avila

Vaca 1: 3 + 8 + 5 + 2 = 18 Vaca 2: 7 + 3 + 2 +1 = 13 César Liza Avila

PD: Este problema es similar 3379-Two Ends. http://acmicpc-live-archive.uva.es/nuevoportal/ Los movimientos de la vaca que usa la estratagia de tomar el mayor de los extremos debe ser llenado en las diagonales que estan vacias. César Liza Avila