c-Programm zu überprüfen, gültige sudoku
ich bin das schreiben von c-code, um zu überprüfen, ob die gegebene matrix ist gültige sudoku-Lösung oder nicht.
Input wäre matrix von n*n-Größe.
Ich habe code geschrieben, um zu überprüfen, Zeile und Spalte, aber ich bin nicht immer so überprüfen Sie die Gitter aus sqrt(n)*sqrt(n) Größe.
mein code ist hier
#include<stdio.h>
int main()
{
int i,j,count=0,sumrow;
int sumcol;
int n;
scanf("%d",&n);
int arr[n+1][n+1];
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&arr[i][j]);
for(i=1;i<=n;i++)
{
sumcol=0;
for(j=1;j<=n;j++)
sumcol+=arr[j][i];
if(sumcol!=(n*(n+1)/2))
count++;
}
for(i=1;i<=n;i++)
{
sumrow=0;
for(j=1;j<=n;j++)
{
sumrow+=arr[i][j];
}
// printf("%d\n",sumrow);
if(sumrow!=(n*(n+1)/2))
count++;
}
//printf("count%d ",count);
if(count==0)
printf("yes");
else
printf("no");
return 0;
}
- Was ist Ihre Frage?
- ich bin nicht immer wie überprüft sub-Netze von sudoku. z.B. für 9*9 sudoku haben wir 3*3 ist 9 Gitter.
- In C zählen wir von 0, nicht 1. Ihre Schleifen sollte "code" for(i=0;i<n;i++)
- ich habe reservierten array von n+1 durch n+1 Größe
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier habe ich eine bessere Lösung. Anstelle der Summe können wir mit einem integer-flag.
Ausführliche Beschreibung, können Sie besuchen Sie diesen link
Können Sie überprüfen, jedes der kleineren Quadrate, ob Sie gültig sind oder nicht.Zum Beispiel, wenn
n=9
Sie haben zu prüfen, jede der3 by 3
Quadrate.Um zu überprüfen, jedes kleine Quadrat, das Sie verwenden können, ein array von 10 Elementen und überprüfen Sie, ob der1 to 9
Wert wiederholt wird oder nicht.Des Algorithmus ist wie folgt
Folgenden ist ein code, das gleiche zu tun
Beachten Sie, dass der obige code wird davon ausgegangen, dass die gesamte raster gefüllt ist und nicht leer ist.Wenn Sie überprüfen möchten, ein teilweise gefülltes grid,führen Sie einen check.
used[A[p][q]-'0'-1]