Voy a ser breve, yo veo clases con un profesor que explica bien y sabe lo que hace, pero su unico problema es que va al par con el alumno mas lento en lugar de ir avanzando acorde al conocimiento de la mayoria, ya estoy algo cansado de ir a clases de programacion a hacer programitas de "calcule la suma de dos numeros" o "calcule el producto de 2 arreglos". El dia de ayer descargue un libro llamado "Murach's java programing" para aprender por mi cuenta, libro bastante bueno pero con pocos ejercicios en el, asi que empeze a buscar por internet y encontra algunos algoritmos "faciles" y decidi empezar a hacerlos para aprender mas, les escribire el problema.
Problema:
Un negociante ocupado tiene varias tareas de igual importancia que debe completar. Para decidir cual de las varias tareas va a resolver primero el negociante elabora la siguiente operación.
El escribe en una hoja todas las tareas que debe realizar de forma circular, de forma que la primera tarea que escribió es adyacente a la ultima que escribió . El luego piensa en un numero positivo y par. Este numero es un valor cualquiera sacado de su mente que el llama "n". comenzando desde la primera tarea, el va de tarea en tarea moviéndose en sentido de las agujas de un reloj (desde el elemento 1 de la lista, al elemento 2, al elemento 3 ... etc) contando desde 1 hasta "n". Cuando cuenta hasta "n", el elimina esta tarea de la lista y comienza a contar desde la siguiente tarea disponible. El repite este procedimiento hasta que solo 1 tarea quede en la lista. La tarea que queda al final del procedimiento es la tarea que el va a ejecutar primero.
Ejemplo:
1)
Tareas{"a","b","c","d"}
N=2
Returns: "a"
Empezamos contando desde a. asi a es 1, b es 2. Eliminamos b, entonces en la lista quedan las tareas {a,c,d}. continuamos desde c. Asi que c es 1, d es 2. Eliminamos d, la lista contiene ahora {a,c}.. Continuamos desde a. Así que a es 1, c es 2. Eliminamos c, y la tarea que quedo en la lista es la tarea que va a ejecutar el negociante, a.
Este es el codigo que ya tengo escrito.
Si es muy poco, mis disculpas, no tengo amplios conocimientos en java, solo quiero aprender.
Por si alguien necesita la fuente de donde yo habia sacado el algoritmos, aqui esta (en ingles): http://community.topcoder.com/stat?c=problem_statement&pm=1585&rd=6535
Mod: no hagas doble post
Problema:
Un negociante ocupado tiene varias tareas de igual importancia que debe completar. Para decidir cual de las varias tareas va a resolver primero el negociante elabora la siguiente operación.
El escribe en una hoja todas las tareas que debe realizar de forma circular, de forma que la primera tarea que escribió es adyacente a la ultima que escribió . El luego piensa en un numero positivo y par. Este numero es un valor cualquiera sacado de su mente que el llama "n". comenzando desde la primera tarea, el va de tarea en tarea moviéndose en sentido de las agujas de un reloj (desde el elemento 1 de la lista, al elemento 2, al elemento 3 ... etc) contando desde 1 hasta "n". Cuando cuenta hasta "n", el elimina esta tarea de la lista y comienza a contar desde la siguiente tarea disponible. El repite este procedimiento hasta que solo 1 tarea quede en la lista. La tarea que queda al final del procedimiento es la tarea que el va a ejecutar primero.
Ejemplo:
1)
Tareas{"a","b","c","d"}
N=2
Returns: "a"
Empezamos contando desde a. asi a es 1, b es 2. Eliminamos b, entonces en la lista quedan las tareas {a,c,d}. continuamos desde c. Asi que c es 1, d es 2. Eliminamos d, la lista contiene ahora {a,c}.. Continuamos desde a. Así que a es 1, c es 2. Eliminamos c, y la tarea que quedo en la lista es la tarea que va a ejecutar el negociante, a.
Este es el codigo que ya tengo escrito.
Código (java) [Seleccionar]
package tareasdenegocio;
import java.util.*;
public class TareasDeNegocio {
public static void main(String[] args)
{
Scanner ec = new Scanner (System.in);
int CantidadTareas=0,Numero;
System.out.println("Introduzca la cantidad de tareas que desea calcular\n");
CantidadTareas = ec.nextInt();
String Tareas []= new String [CantidadTareas];
for (int x=0;x<CantidadTareas;x++)
{
System.out.println("Introduzca la tarea numero "+x+"\n");
Tareas[x]=ec.nextLine();
if (x==CantidadTareas)
{
System.out.println("Introduzca un numero positivo\n");
Numero=ec.nextInt();
}
}
}
}
Si es muy poco, mis disculpas, no tengo amplios conocimientos en java, solo quiero aprender.
Por si alguien necesita la fuente de donde yo habia sacado el algoritmos, aqui esta (en ingles): http://community.topcoder.com/stat?c=problem_statement&pm=1585&rd=6535
Mod: no hagas doble post