Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Vanzare cumparare fara transfer b...

Receptie ciudata, in functie de t...

Dupa 20 ani de facultate, am uita...

Mobile.de ofera imprumut de bani ...
 problema test grila

Digi24 a disparut de pe TV Lg

Drept de proprietate intelectuala...

Jante noi shitbox
 Trinitas TV 4K

Dacia 1316 cu 6 usi ...

Frecventa modificata radio

Un nou pericol pt batrani
 Ar trebuii sa vindem imobiliarele...

Dupa renuntarea la aparat dentar

pelerinaj in Balcik

Noul format Jpegli iși propu...
 

[TEMA] Plasare crocodili si elefanti

- - - - -
  • Please log in to reply
23 replies to this topic

#1
Redount2k9

Redount2k9

    Member

  • Grup: Members
  • Posts: 374
  • Înscris: 13.07.2010
Salut, incerc sa rezolv aceasta problema insa obtin doar 60p.

Codul meu:
#include <fstream>
 
using namespace std;

ifstream fin("croco1.in");
ofstream fout("croco1.out");

#define DIM 101

int n, m, a[DIM][DIM], cntC1, cntC2, cntE1, cntE2;
char c[DIM][DIM];

void Read();
void Problem();

int main()
{
	Read();
	Problem();
	fin.close();
	fout.close();
	return 0;
}
void Problem()
{
	for ( int i = 1; i <= n; ++i )
		for ( int j = 1; j <= m; ++j )
		{
			if ( i % 2 && j % 2 && !a[i][j] ) c[i][j] = 'C', cntC1++, cntE2++;
			else
			if ( i % 2 && !( j % 2) && !a[i][j] ) c[i][j] = 'E', cntE1++, cntC2++;
			else
			if ( !( i % 2) && j % 2 && !a[i][j] ) c[i][j] = 'E', cntE1++, cntC2++;
			else
			if ( !( i % 2) && !( j % 2) && !a[i][j] ) c[i][j] = 'C', cntC1++, cnt E2++;
			else
			if ( a[i][j] ) c[i][j] = 'A';
		}
	if ( cntC1 > cntC2 )
		fout << cntC1 << ' ' << cntE1 << '\n';
	else
		fout << cntC2 << ' ' << cntE2 << '\n';
}
void Read()
{
	fin >> n >> m;
	for ( int i = 1; i <= n; ++i )
		for ( int j = 1; j <= m; ++j )
			fin >> a[i][j];
}

Cunoaste cineva o cale mai luminoasa care sa tinda spre punctajul maxim?

#2
Ion_de_la_Raion

Ion_de_la_Raion

    Guru Member

  • Grup: Senior Members
  • Posts: 20,434
  • Înscris: 28.08.2005
Pune-i pe toti la un loc. Crocodilii se duc singuri in apa.

#3
Cy_Cristian

Cy_Cristian

    Active Member

  • Grup: Members
  • Posts: 1,845
  • Înscris: 22.02.2009
1. Trebuie sa stii sa detectezi fiecare regiune de uscat in parte.
2. Fiecare regiune trebuie colorata cu alb sau negru. (De ce nu direct C si E?!).
3. Finalizare.

Pentru exemplele de mai jos, solutia va fi 3,1.
101
000
101

1101
1000
1101




#4
Redount2k9

Redount2k9

    Member

  • Grup: Members
  • Posts: 374
  • Înscris: 13.07.2010

View PostCy_Cristian, on 28 iulie 2014 - 12:00, said:

2. Fiecare regiune trebuie colorata cu alb sau negru. (De ce nu direct C si E?!).


Stai, ce?

#5
Cy_Cristian

Cy_Cristian

    Active Member

  • Grup: Members
  • Posts: 1,845
  • Înscris: 22.02.2009
Ce parte n-ai inteles? Ai incercat macar sa analizezi ce-am spus?
De ce nu poti sa faci mapare direct cu C si E? Ti-am dat si 2 exemple pentru a intelege. Ti-am sugerat alb si negru.

#6
Redount2k9

Redount2k9

    Member

  • Grup: Members
  • Posts: 374
  • Înscris: 13.07.2010
Sa luam o matrice 3x3 cu 2 elemente apa (notate cu 1)

0 0 1
0 1 0
0 0 0

Avem doar 2 metode de a plasa crocodili© si elefanti(E):

1) C E A            
    E A E
    C E C

2) E C A
    C A C
    E C E

In al doilea caz avem cel mai mare nr de crocodili. Pe aceasta metoda m-am bazat in rezolvarea mea, insa nu stiu de ce nu obtin punctajul maxim.

#7
Cy_Cristian

Cy_Cristian

    Active Member

  • Grup: Members
  • Posts: 1,845
  • Înscris: 22.02.2009
Nu ai prezentat metoda. Cum decizi care va fi modalitatea in care ii vei aranja? Ce elemente de logica te duc la cea de-a 2 aranjare?
Eu ti-am dat un algoritm care te ajuta sa identifici numarul maxim. Cu un foarte mic efort, se poate deduce si o aranjare cu numar maxim de crocodili (de remarcat ca pot fi mai multe astfel de aranjari).

#8
Redount2k9

Redount2k9

    Member

  • Grup: Members
  • Posts: 374
  • Înscris: 13.07.2010
Metoda mea se bazeaza pe faptul ca incepem din coltul stanga sus cu un crocodil sau cu un elefant, iar acele if-uri verifica sa fie o distanta intre 2 animale de acelasi tip. In functie de cazul in care avem numar maxim de crocodili, afisam numarul respectiv si numarul de elefanti.
Nu am inteles ideea pe care ai incercat sa mi-o prezinti.

#9
Cy_Cristian

Cy_Cristian

    Active Member

  • Grup: Members
  • Posts: 1,845
  • Înscris: 22.02.2009
A programa inseamna a gasi un algoritm care se poate demonstra riguros. Chiar daca uneori se ajunge la magic numbers (cauta pe net si vezi ce zic).
Iti dau un test altfel. Si poate te gandesti ce vreau sa zic cu regiuni in parte.
01101
11000
11101
Daca punem C in coltul din stanga sus, si respectam conditia de a pune din 2 in 2, atunci avem
C11E1
11ECE
111E1
Nu convine
Plecand cu E obtinem:
E11C1
11CEC
111C1
Insa nici unul din cazuri nu convine.
Solutia corecta este:
C11C1
11CEC
111C1

Adica pentru fiecare regiune in parte trebuie sa gasim distributia corecta.
Dar n-o stim de la inceput si pentru a nu face 2 parcurgeri, calculam pentru fiecare regiune in parte numarul de patrate albe si negre. Care sunt cele mai multe reprezinta crocodilii.

Edited by Cy_Cristian, 28 July 2014 - 17:39.


#10
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,444
  • Înscris: 10.08.2005

View PostRedount2k9, on 28 iulie 2014 - 11:15, said:

Salut, incerc sa rezolv aceasta problema insa obtin doar 60p.
DE CE?
Ai date gresite sau depasesti timpul?

#11
Redount2k9

Redount2k9

    Member

  • Grup: Members
  • Posts: 374
  • Înscris: 13.07.2010
Raspuns gresit.

#12
Cy_Cristian

Cy_Cristian

    Active Member

  • Grup: Members
  • Posts: 1,845
  • Înscris: 22.02.2009
Ti-am dat un test pe care sa-l incerci.
Pot sa-ti dau unul si mai simplu.
0 1 1 0
Testeaza pe acest caz si vezi unde-i problema de logica.

#13
Redount2k9

Redount2k9

    Member

  • Grup: Members
  • Posts: 374
  • Înscris: 13.07.2010
Am inteles unde e problema de logica. Acum ma gandesc la impartirea pe sectoare a matricei.

#14
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,444
  • Înscris: 10.08.2005
incearca sa pui cel putin 4 crodili in jurul fiecarui lac.

#15
Redount2k9

Redount2k9

    Member

  • Grup: Members
  • Posts: 374
  • Înscris: 13.07.2010
Cum?

#16
EnachescuAlin

EnachescuAlin

    Active Member

  • Grup: Members
  • Posts: 1,008
  • Înscris: 08.07.2013

View PostMarianG, on 28 iulie 2014 - 20:09, said:

incearca sa pui cel putin 4 crodili in jurul fiecarui lac.

cum adica cel putin 4 crocodili? Pai in jurul unui lac poti sa pui maxim 4 crocodili.

Eu as face o functie recursiva care sa se autoapeleze pana cand nu mai exista niciun spatiu uscat in matrice. Iar pentru numararea spatiilor uscate as face o functie, care dupa ce gaseste un singur spatiu uscat returneaza o valoare care indica ca mai exista (nu conteaza numarul lor). Iar in functia recursiva daca mai exista loc uscat atunci parcurgi matricea si unde gasesti apa sau elefant incerci sa pui numarul maxim de crocodili (adica 4), iar dupa ce ai pus crocodilul in jurul lui pui elefanti si dupa ce ai facut operatiile astea pui functia sa se autoapeleze.

#17
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,444
  • Înscris: 10.08.2005
Legenda:
P - pamant
A - apa
C - crocodil
E - elefant
0 C E C  0
C A A A  C
0 C E C 0

A A A - este un singur lac, de dimensiune 3

#18
EnachescuAlin

EnachescuAlin

    Active Member

  • Grup: Members
  • Posts: 1,008
  • Înscris: 08.07.2013
Asa merge. Eu credeam ca tu referi doar la un A.

Anunturi

Neurochirurgie minim invazivă Neurochirurgie minim invazivă

"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv.

Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate