Enviado em 15/04/2014 - 22:25h
Oi gente, ccomecei a programar em C a 2 dias. Mas ja perguntei a uns colegas e ninguem sabe me dizer por que ta errado. Meu professor so ensina java e perguntar a ele durante a aula atraza o assunto. será que vcs podem me ajudar? este é o link da questao: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=sh...
#include <bits/stdc++.h>
using namespace std;
//declaro matriz principal
char array[105][105];
//declaro uma matriz secundária correspondente a principal, com todos os valores F/T
bool tem[105][105];
//declaro variaveis r(row ou linha), c(colunas), oleo(nmero de pocos de petroleo)
int r,c,oleo,cont;
//crio 2 arrays ja preenchidos com os numeros que eu preciso somar a linha/coluna de um elemento para ter seus(no máximo 8) vizinhos
int dr[8] = {1, 1, 1, 0, -1, -1, 0};
int dc[8] = {0, -1, 1, 1, -1, 1, -1};
//crio uma funcao que posteriormente servira para eu validar se os vizinhos existem ou nao(um elemento pode ter entre 0-8 vizinhos)
bool valid(int x, int y) {
return (x>=0 && y>=0 && x<r && y<c);
}
int main(){
//escaneio as variaveis que formam a matriz
while (scanf("%d %d", &r, &c) == 2 && r != 0 && c!=0) {
//digo que a matriz secundaria `tem` eh preenchida so com falsos e que oleo=0 no comeco
memset(tem,false,sizeof tem);
oleo = 0;
//leio a matriz
for (int i=0;i<r;i++){
for(int j=0; j<c;j++){
scanf("%c", &array[i][j]);
}
}
//leio cada elemento da matriz principal.
//por motivos de organizacao chamarei este elemento na matriz principal de ep
for (int i=0;i<r;i++){
for(int j=0; j<c;j++){
//caso ep = @ faca
if (array[i][j]=='@'){
//leia cada vizinho possivel de ep
if (cont<100){
for (int k=0;k<8;k++){
int nr = i+dr[k];
int nc = j+dc[k];
//este vizinho existe ?
if(valid(nr,nc)){
//por motivos de organizacao chamarei este elemento vizinho de ev
//se ele exite ele eh um @?
if(array[nr][nc]=='@'){
//entao ev eh um @. Mas ev ta marcado como True no seu elemento correspondente na matriz secundaria?
if (tem[nr][nc]==true){
//entao marque o elemento correspondente a ep como true
tem[i][j]=true;
cont++;
}
}
}
}
}
//o elemento ep eh falso?
if (tem[i][j]== false){
if (cont==100){
cont=0;
}
tem[i][j]=true;
oleo++;
cont++;
for (int k=0;k<8;k++){
int nr = i+dr[k];
int nc = j+dc[k];
if(valid(nr,nc)){
if(array[nr][nc]=='@'){
if (tem[nr][nc]== false){
tem[nr][nc]=true;
cont++;
}
}
}
}
}
}
}
}
printf("%d\n", oleo);
}
return 0;
}
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
VMs e Interfaces de Rede desapareceram (12)
Instalação do drive do adaptador wiffi (7)