[C++] Zadanie SPOJ - SUDOKUC
Ostatnio zmodyfikowano 2020-01-08 10:26
Biedrzyk Temat założony przez niniejszego użytkownika |
[C++] Zadanie SPOJ - SUDOKUC » 2020-01-03 20:13:24 Witam, napisałem program jak w temacie, jednak gdy używam danych wejściowych podanych w treści zadania odpowiedź zawsze brzmi tak - nie mogę namierzyć błędu. Link do zadania i danych wejściowych: https://pl.spoj.com/problems/SUDOKUC/Treść zadania: Napisz program, który będzie sprawdzać czy podana tabela 9x9 liczb całkowitych jest prawidłowym rozwiązaniem łamigłówki sudoku. Wejście W pierwszej linii - jedna liczba całkowita n określająca liczbę przypadków testowych. Następnie kolejne przypadki testowe, w każdym 9 linii po 9 liczb całkowitych z przedziału <-1000, 1000> oddzielonych spacjami. Przypadki testowe są rozdzielone pustą linią. Wyjście Dla każdego przypadku testowego w wejściu jedna linia zawierająca słowo "TAK" lub "NIE" w zależności od tego, czy dany zestaw danych stanowi poprawne rozwiązanie sudoku. #include <iostream>
using namespace std;
bool czyCyfryWWierszachPowtarzajaSie( int planszaSudoku[ 9 ][ 9 ] ) { for( int numerWiersza = 0; numerWiersza < 9; numerWiersza++ ) { for( int numerKolumnyBazowej = 0; numerKolumnyBazowej < 9; numerKolumnyBazowej++ ) { for( int numerKolumnyPorownywanej = numerKolumnyBazowej + 1; numerKolumnyPorownywanej < 9; numerKolumnyPorownywanej++ ) { if( planszaSudoku[ numerWiersza ][ numerKolumnyBazowej ] == planszaSudoku[ numerWiersza ][ numerKolumnyPorownywanej ] ) { return true; } } } } return false; }
bool czyCyfryWKolumnachPowtarzajaSie( int planszaSudoku[ 9 ][ 9 ] ) { for( int numerKolumny = 0; numerKolumny < 9; numerKolumny++ ) { for( int numerWierszaBazowego = 0; numerWierszaBazowego < 9; numerWierszaBazowego++ ) { for( int numerWierszaPorownywanego = numerWierszaBazowego + 1; numerWierszaPorownywanego < 9; numerWierszaPorownywanego++ ) { if( planszaSudoku[ numerWierszaBazowego ][ numerKolumny ] == planszaSudoku[ numerWierszaPorownywanego ][ numerKolumny ] ) { return true; } } } } return false; }
bool czyCyfryWWybranejMalejPlanszyPowtarzajaSie( int planszaSudoku[ 9 ][ 9 ], int numerWierszaStartowegoMalejPlanszy, int numerKolumnyStartowejMalejPlanszy ) { for( int numerWierszaBazowego = numerWierszaStartowegoMalejPlanszy; numerWierszaBazowego < numerWierszaStartowegoMalejPlanszy + 3; numerWierszaBazowego++ ) { for( int numerKolumnyBazowej = numerKolumnyStartowejMalejPlanszy; numerKolumnyBazowej < numerKolumnyStartowejMalejPlanszy + 3; numerKolumnyBazowej++ ) { for( int numerWierszaPorownywanego = numerWierszaBazowego + 1; numerWierszaPorownywanego < numerWierszaStartowegoMalejPlanszy + 3; numerWierszaPorownywanego++ ) { for( int numerKolumnyPorownywanej = numerKolumnyBazowej + 1; numerKolumnyPorownywanej < numerKolumnyStartowejMalejPlanszy + 3; numerKolumnyPorownywanej++ ) { if( planszaSudoku[ numerWierszaBazowego ][ numerKolumnyBazowej ] == planszaSudoku[ numerWierszaPorownywanego ][ numerKolumnyPorownywanej ] ) { return true; } } } } } return false; }
bool czyCyfryWMalychPlanszachPowtarzajaSie( int planszaSudoku[ 9 ][ 9 ] ) { for( int numerWiersza = 0; numerWiersza < 9; numerWiersza += 3 ) { for( int numerKolumny = 0; numerKolumny < 9; numerKolumny += 3 ) { if( czyCyfryWWybranejMalejPlanszyPowtarzajaSie( planszaSudoku, numerWiersza, numerKolumny ) ) { cout << "NIE"; return true; } } } cout << "TAK"; return false; }
int main() { int testy; int tab[ 9 ][ 9 ]; cin >> testy; for( int i = 0; i < testy; i++ ) { for( int i = 0; i < 9; i++ ) { for( int j = 0; j < 9; j++ ) { cin >> tab[ i ][ j ]; cout << tab[ i ][ j ] << " "; } cout << endl; } cout << endl; cout << czyCyfryWMalychPlanszachPowtarzajaSie( tab ); cout << endl; } return 0; }
|
|
pekfos |
» 2020-01-03 22:11:25 Narysuj sobie na kartce co robią te 4 pętle w czyCyfryWWybranejMalejPlanszyPowtarzajaSie, ze szczególnym uwzględnieniem tych +1 w warunkach dwóch najbardziej zagnieżdżonych pętli. |
|
Biedrzyk Temat założony przez niniejszego użytkownika |
» 2020-01-05 21:25:52 Dzięki za podpowiedź, właśnie się za to biorę. |
|
Biedrzyk Temat założony przez niniejszego użytkownika |
» 2020-01-08 10:26:27 Znalazłem błąd :)już hula i buczy :) dzięki za naprowadzenie :) |
|
« 1 » |