Buscaminas Reloaded
Karelov III 2007Tiempo: 1 segundo
Si encuentras un cuadro con un espacio vacío un número es impreso dentro de ese cuadro diciéndote cuántas minas son adyacentes a ese espacio vacío.
Un buen día te topaste con un juego de buscaminas con unicamente 2 filas y con N columnas.
Decidiste aventurarte un poco y seleccionaste todos los cuadrados de una de las filas, y como estabas de suerte, ninguno de los cuadrados de la fila resultó tener minas.
Sin embargo, en dicha fila aparecieron muchos números indicando cuántas minas había adyacentes a cada cuadro(todas las minas resultaron estar en la otra fila).
Problema
Dados los números que aparecieron en la fila que seleccionaste, determina en qué lugares de la otra fila debe haber minas.Entrada
La primera línea contendrá un número entero 1≤N≤200, la segunda línea contendrá unicamente N dígitos(números del 1 al 9) sin espacios representando el contenido de los cuadrados de la fila que seleccionaste.Salida
Deberá contener una sola línea con N caracteres, cada caracter deberá ser un '.' si no hay mina en su posición correspondiente o un '*' si la hay. Se garantiza que siempre habrá una y solo una solución posible.Ejemplo
|
|
El problema me parece bastante sencillo.
ResponderEliminarAunque olvide como leer caracteres, esta es la idea(ayudenme a corregirla):
#include
long a[202],i,n,b[2002];
chair c[200];
int main(){
scanf("%ld",&n);
for(i=0;i<n;i++){
scanf("%chair",c[i]);
b[i+1]=c[i];
}
if(b[3]<b[2])
a[1]=1;
for(i=1;i<n;i++)
a[i+1]=b[i]-a[i-1]-a[i];
for(i=1;i<n+1;i++){
if(a[i]==0){
printf("*");
}else{
printf(".");
}
}
}
siguiendo con la idea
Eliminar#include
#include
int a[204],i,n,b[204],j;
int main(){
scanf("%ld",&n);
for(i=0;i<n;i++){
scanf("%d",&j);
b[i]=j;
}
if(b[1]<b[0])
a[0]=1;
for(i=1;i<n;i++)
a[i+1]=b[i]-a[i]-a[i+2];
for(i=1;i<n+1;i++){
if(a[i]==0){
printf("*");
}else{
printf(".");
}
}
}
No era tan simple, casitos:
Eliminar#include
long a[202],i,n,e;
char c[200];
int main(){
scanf("%ld",&n);
scanf("%s",c);
for(i=0;i<n;i++){
c[i]=c[i]-'0';
}
a[0]=1;
a[1]=c[0]-1;
for(i=2;i<n+1;i++)
a[i]=c[i-1]-a[i-1]-a[i-2];
for(i=0;i<n;i++){
if(a[i]==-1||a[i]==2){
e=1;
break;
}
}
if(a[n]==0&&e==0){
for(i=0;i<n;i++){
if(a[i]==1){
printf("*");
}else{
printf(".");
}
}
}else{
a[0]=0;
a[1]=c[0];
for(i=2;i<n;i++)
a[i]=c[i-1]-a[i-1]-a[i-2];
for(i=0;i<n;i++){
if(a[i]==1){
printf("*");
}else{
printf(".");
}
}
}
}