Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Como realizo el backtracking aca

Estas en el tema de Como realizo el backtracking aca en el foro de C/C++ en Foros del Web. Una textura (en el área de computación gráfica) es una imagen del tipo bitmap (una imagen en mapa de bits) utilizada para cubrir la superficie ...
  #1 (permalink)  
Antiguo 12/01/2014, 15:57
 
Fecha de Ingreso: enero-2014
Mensajes: 1
Antigüedad: 10 años, 4 meses
Puntos: 0
Información Como realizo el backtracking aca

Una textura (en el área de computación gráfica) es una imagen del tipo bitmap (una imagen en mapa de bits) utilizada para cubrir la superficie de un objeto virtual, ya sea tridimensional o bidimensional. Un objeto virtual puede tener asociado varias texturas. Por ejemplo, para un avatar, podemos tener la textura de la cara, el cuerpo, las piernas, pies, cabello, etc.
Por comodidad, se suelen colocar todas las texturas de un mismo objeto en una sola textura (textura atlas). El objetivo de utilizar la textura atlas es simplificar el número de objetos de textura a manipular. Simplemente con cargar una imagen estaremos cargando todas las texturas de un objeto complejo.

Dado un conjunto de imágenes que representan texturas, determinar la textura atlas más pequeña que incluya a todas las texturas. La textura atlas más pequeña es la que tiene la menor cantidad de píxeles, y que pueda almacenar todas las texturas.

Entrada:

La primera línea de entrada será un entero N representando la cantidad de imágenes 1 ≤ N ≤ 7. Luego seguirán N líneas, cada una indicando el ancho y el alto de la imagen, seguido de un carácter
C que identifica a la imagen unívocamente. Asuma que 1 ≤ ancho, alto ≤ 3, mientras que C puede ser cualquier carácter ASCII comprendido en A-Z y ‘0’-‘9’.

Salida:

La Primera línea de salida consistirá en 2 enteros separados por un espacio en blanco, que indican el ancho y alto de la textura atlas resultante, luego debe imprimir una matriz de caracteres representando el estado final de dicha textura. Cada celda de la matriz contiene el identificador C de la textura correspondiente, o bien el carácter # que constituye un pixel no utilizado por ninguna textura (Ver ejemplos). En caso de existir varias soluciones óptimas (con la misma cantidad de píxeles de la textura atlas como por ejemplo 10x2 o 4x5, o que las texturas se puedan ubicar de manera distinta dentro de la textura atlas) basta con imprimir cualquiera de las soluciones óptimas.

EJEMPLOS:

Entrada
4
2 2 A
2 2 B
1 4 C
1 4 D

Salida
4 4
AACD
AACD
BBCD
BBCD


debe ser realizado en C++ y empleando esquemas de backtracking.


Ya hice una parte del código pero tengo duda acerca de como inicio el bactracking

#include <iostream>
using namespace std;

class Atlas
{
private:
int Ancho;
int Alto;
char Imagen;
public:
void ModificarAnc(int ANC){Ancho=ANC;}
int ObtenerAnc(){return Ancho;}
void ModificarAlt(int ALT){Alto=ALT;}
int ObtenerAlt(){return Alto;}
void ModificarImg(char IMG){Imagen=IMG;}
char ObtenerImg(){return Imagen;}

void Llenar(char Matriz[20][20])
{
for (int i=0;i<20;i++)
{
for(int j=0;j<20;j++)
{
Matriz[i][j]='#';
}
}
}

void Objetos(Atlas Imagenes[],int N,char Matriz[20][20])
{
int k=0;
while (k<N)
{
for (int i=0;i<Imagenes[k].ObtenerAlt();i++)
{
for(int j=0;j<Imagenes[k].ObtenerAnc();j++)
{
Matriz[i][j]=Imagenes[k].ObtenerImg();
}
}
k++;
}
for (int i=0;i<20;i++)
{
cout<<"\n";
for(int j=0;j<20;j++)
{
cout<<Matriz[i][j];
}
}
cout<<"\n\n";
}
};
int main()
{
int N;
cin>>N;
int Anc;
int Alt;
char Img;
char Matriz[20][20];
Atlas Imagenes[N];
for (int i=0;i<N;i++)
{
cin>>Alt>>Anc>>Img;
Imagenes[i].ModificarAlt(Alt);
Imagenes[i].ModificarAnc(Anc);
Imagenes[i].ModificarImg(Img);
}
Atlas Prueba;
Prueba.Llenar(Matriz);
Prueba.Objetos(Imagenes,N,Matriz);
system("PAUSE");
return 0;
}

Etiquetas: c++, programacion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:49.