BFS, zadanie

PA
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 5 lat
  • Postów:83
0

Cześć,

mam takie zadanie:
http://solve.edu.pl/contests/download_desc/2056
i taki kod:
https://wandbox.org/permlink/7BmvYCPLf0G4ohuK

dla testów z zadania działa poprawnie ale nie wiem czemu dla innych nie:-(

Na przykład dla testu:
1 2
S.W
wypisuje mi:

Tak
S.

i nic więcej a powinno:
Tak
SDW

edytowany 2x, ostatnio: pattom
szweszwe
  • Rejestracja:ponad 11 lat
  • Ostatnio:4 dni
  • Lokalizacja:Kraków
  • Postów:1694
0

Dla testów z zadania działa poprawnie?

PA
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 5 lat
  • Postów:83
0
szweszwe napisał(a):

Dla testów z zadania działa poprawnie?
Tak

szweszwe
  • Rejestracja:ponad 11 lat
  • Ostatnio:4 dni
  • Lokalizacja:Kraków
  • Postów:1694
0

To, że w dokumencie jest co innego niż u ciebie na wyjściu to nie przeszkadza?

PA
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 5 lat
  • Postów:83
0
szweszwe napisał(a):

To, że w dokumencie jest co innego niż u ciebie na wyjściu to nie przeszkadza?
Poproszę jaśniej.
Gdzie jest co innego ?
Jeśli chodzi o brakujące D to nie ma znaczenia, w treści zadania jest to opisane.

edytowany 1x, ostatnio: pattom
Zobacz pozostałe 7 komentarzy
szweszwe
Tak. A 1 przykład bez D jest poprawny?
PA
Oczywiście, że nie.
szweszwe
A u ciebie jest na wyjściu 'D'?
PA
Tak, dokładnie to: Tak .DSD.. .DSDW. DSD... .DW... ...W.. ......
szweszwe
Ok, czekaj bo teraz ja bredzę :]
PA
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 5 lat
  • Postów:83
0
pattom napisał(a):

Cześć,

mam takie zadanie:
http://solve.edu.pl/contests/download_desc/2056
i taki kod:
https://wandbox.org/permlink/7BmvYCPLf0G4ohuK

dla testów z zadania działa poprawnie ale nie wiem czemu dla innych nie:-(

Błąd w treści.

szweszwe
  • Rejestracja:ponad 11 lat
  • Ostatnio:4 dni
  • Lokalizacja:Kraków
  • Postów:1694
0

A nie powinieneś podać
1 3
S.W
?
Bo to pole ma wymiar 3.

PA
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 5 lat
  • Postów:83
0
szweszwe napisał(a):

A nie powinieneś podać
1 3
S.W
?
Bo to pole ma wymiar 3.

Tak oczywiście, test działa.
Dlatego pisałem o błędzie w treści maila ale nie mogłem edytować.
Ale mimo to nie przechodzi wszystkich testów na sprawdzaczce :-(

edytowany 1x, ostatnio: pattom
szweszwe
  • Rejestracja:ponad 11 lat
  • Ostatnio:4 dni
  • Lokalizacja:Kraków
  • Postów:1694
0

A co powinno być w takim przypadku?
1 1
W

PA
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 5 lat
  • Postów:83
0
szweszwe napisał(a):

A co powinno być w takim przypadku?
1 1
W

Teoretycznie pewnie powinnop wypisać Tak, bo jak nie ma owiec to wilk nie ma co zjadać więc owce są chronione :-)

szweszwe
Też tak uważam. Wypisujesz 'Nie' ale w przypadku jakby tam była kropka ('.') to wypiszesz 'Tak'.
PA
No to taki problem :-) Jak ktoś widzi błędy w kodzie to proszę o pomoc :-)
szweszwe
Ale przecież możesz łatwo dodać sobie licznik owiec w taki sam sposób jak zliczasz teraz wilki.
PA
ale co mi to da?
szweszwe
Jak nie ma owcy to wypiszesz 'Tak'.
Delor
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 2 lata
2

Zastanawiam się po co tam BFS?
Psy są nielimitowane.
Już podczas wczytywania danych można zamienić wszystkie '.' na 'D' a potem tylko sprawdzić czy 'S' nie sąsiaduje z 'W'.
BFS nie przyspieszy ani nie ułatwi algorytmu.

edytowany 1x, ostatnio: Delor
huehuehue
  • Rejestracja:około 6 lat
  • Ostatnio:około 6 lat
  • Postów:3
0

Proponowałbym tak:

Kopiuj
#include <iostream>
using namespace std;

char T[505][505]; //tworzenie tablicy globalnej

int main() {
	int W, K;
	cin>>W>>K;
	char A[K];
	for(int i=1;i<=W;i++){//wczytanie tablicy numeracja od 1
		cin>>A+1;
		for(int j=1;j<=K;j++){
			T[i][j]=A[j];
		}
	}
	for(int i=1;i<=W;i++){
		for(int j=1;j<=K;j++){
			if(T[i][j]=='W'){
				if(T[i-1][j]=='S' || T[i+1][j]=='S' || T[i][j+1]=='S' || T[i][j-1]=='S'){//jesli owca koło wilka to się nie da postawić psa
					cout<<"Nie";
					return 0;
				} else{ //w przeciwnym wypadku otaczamy wilka psami
					T[i-1][j]='D';
					T[i+1][j]='D';
					T[i][j+1]='D';
					T[i][j-1]='D';
				}
			}
		}
	}
	cout<<"Tak\n";
	for(int i=1;i<=W;i++){//wypisanie tablicy
		for(int j=1;j<=K;j++){
			cout<<T[i][j];
		}
		cout<<endl;
	}
	return 0;
}

Jeśli koło wilka jest owca to nie da się postawić psa w przeciwnym wypadku można wilka otoczyć psami.

Delor
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 2 lata
0
  1. Tablica o wielkości 502x502 powinna wystarczyć.
    10-15) Na brzegach tablicy zostają przypadkowe wartości.
    22-27) Sąsiadujące wilki zostaną zastąpione psami.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.