当前位置:网站首页>Solve 9 with C language × 9 Sudoku (personal test available) (thinking analysis)
Solve 9 with C language × 9 Sudoku (personal test available) (thinking analysis)
2022-07-06 02:38:00 【Fish ball】
use C Linguistic solution 9×9 Sudoku ( Close test available )( Thought analysis )
Sudoku , I believe we are all familiar , Just like this. :


#include <stdio.h>
#include <stdbool.h>
#include <windows.h>
#pragma warning(disable:4996);
// Read the incomplete Sudoku matrix
void readMatrix(int array[9][9])
{
int row, // That's ok
col; // Column
for (row = 0; row < 9; row++)
{
for (col = 0; col < 9; col++)
scanf(" %1d", &array[row][col]); /**** Be careful %1d And there are spaces in front of ****/
getchar();
}
}
// Determine whether there are duplicate numbers on rows and columns ( Return without repetition true, Repeat return false)
bool RowAndColRepeat(int array[9][9], int row, int col, int num)
{
int i; // Count
// Determine whether there are duplicate numbers on the line
for (i = 0; i < 9; i++)
if (array[row][i] == num)
return false;
// Determine whether there are duplicate numbers on the column
for (i = 0; i < 9; i++)
if (array[i][col] == num)
return false;
return true;
}
// Determine the position Which is it? 3x3 squared paper for practicing calligraphy
int getRowOrCol(int num)
{
if (num < 3)
return 0;
else if (num < 6)
return 3;
else
return 6;
}
// Judge 3x3 Is there a duplicate number in the Jiugong grid ( Return without repetition true, Repeat return false)
bool BlockRepeat(int array[9][9], int row, int col, int num)
{
int getRowOrCol(int num); // obtain 3x3 The function prototype declaration of the starting position of the Jiugong lattice
int rowStart, // Line number
colStart, // Column number
i, j; // Count
rowStart = getRowOrCol(row);
colStart = getRowOrCol(col);
for (i = rowStart; i < rowStart + 3; i++)
for (j = colStart; j < colStart + 3; j++)
if (array[i][j] == num)
return false;
return true;
}
// Deep search of Sudoku
void calculation(int array[9][9], int row, int col)
{
int i, j; // Count // recursive , Set up exits : If the line number row Beyond array row subscript , Exit recursive output answer
if (row > 8)
{
for (i = 0; i < 9; i++)
{
for (j = 0; j < 9; j++)
printf("%d ", array[i][j]);
printf("\n");
}
return;
}
// If array[row][col] == 0 That is, the number of this position is not determined
if (array[row][col] == 0)
{
for (i = 1; i < 10; i++)
// from 1 to 9 Start counting for(i = 1;i < 10;i++)
// Trial method : Judge whether there are duplicate numbers on the row and column of this position , Then judge where you are 3x3 Is it repeated in the palace
// If 1 to 9 There is a suitable number in , Then the number of this position is this number , And start traversing the next location
if (RowAndColRepeat(array, row, col, i) && BlockRepeat(array, row, col, i))
{
array[row][col] = i;
calculation(array, row + (col + 1) / 9, (col + 1) % 9); // When the cells of each row have been traversed , Go to the next line
}
array[row][col] = 0; // If there is no or incorrect number , Is reset to 0
}
else
{
// If the number of this position is determined, skip this position , Traverse the next position
calculation(array, row + (col + 1) / 9, (col + 1) % 9); // When the cells of each row have been traversed , Go to the next line
}
}
int main()
{
int array[9][9];// Make a statement 9x9 Sudoku matrix
printf(" Please enter the title :\n");
readMatrix(array);// Read Sudoku topics
printf("\n The result of the calculation is :\n");
calculation(array, 0, 0);// Start deep search from the first cell
system("pause");// Pause window , Show results
return 0;
}
The effect is as follows :

Then there is the action , Write the answer into the question !!
There are still better ways , Welcome to the comment area to discuss ~~
边栏推荐
- 会员积分营销系统操作的时候怎样提升消费者的积极性?
- Qt发布exe软件及修改exe应用程序图标
- Zero foundation self-study STM32 - Review 2 - encapsulating GPIO registers with structures
- How to improve the enthusiasm of consumers when the member points marketing system is operated?
- Pure QT version of Chinese chess: realize two-man, man-machine and network games
- [coppeliasim] 6-DOF path planning
- 剑指 Offer 30. 包含min函数的栈
- Advanced technology management - what is the physical, mental and mental strength of managers
- What should we pay attention to when using the built-in tool to check the health status in gbase 8C database?
- 3D drawing ()
猜你喜欢

RobotFramework入门(二)appUI自动化之app启动

Initial understanding of pointer variables

2345文件粉碎,文件强力删除工具无捆绑纯净提取版

Which ecology is better, such as Mi family, graffiti, hilink, zhiting, etc? Analysis of five mainstream smart brands

Pat grade a 1033 to fill or not to fill

解决:AttributeError: ‘str‘ object has no attribute ‘decode‘
![[Yunju entrepreneurial foundation notes] Chapter II entrepreneur test 24](/img/2e/b1f348ee6abaef24b439944acf36d8.jpg)
[Yunju entrepreneurial foundation notes] Chapter II entrepreneur test 24

"Hands on learning in depth" Chapter 2 - preparatory knowledge_ 2.5 automatic differentiation_ Learning thinking and exercise answers

【MySQL 15】Could not increase number of max_ open_ files to more than 10000 (request: 65535)

2345 file shredding, powerful file deletion tool, unbound pure extract version
随机推荐
2345 file shredding, powerful file deletion tool, unbound pure extract version
2022 eye health exhibition, vision rehabilitation exhibition, optometry equipment exhibition, eye care products exhibition, eye mask Exhibition
PMP practice once a day | don't get lost in the exam -7.5
[Yunju entrepreneurial foundation notes] Chapter II entrepreneur test 21
[Yunju entrepreneurial foundation notes] Chapter II entrepreneur test 18
力扣今日题-729. 我的日程安排表 I
[Yunju entrepreneurial foundation notes] Chapter II entrepreneur test 15
[Yunju entrepreneurial foundation notes] Chapter II entrepreneur test 7
主数据管理理论与实践
高数_向量代数_单位向量_向量与坐标轴的夹角
Dachang image library
Pure QT version of Chinese chess: realize two-man, man-machine and network games
A copy can also produce flowers
How to check the lock information in gbase 8C database?
更换gcc版本后,编译出现make[1]: cc: Command not found
2345文件粉碎,文件强力删除工具无捆绑纯净提取版
[Wu Enda machine learning] week5 programming assignment EX4 - neural network learning
DDoS "fire drill" service urges companies to be prepared
Pat grade a 1033 to fill or not to fill
[Yunju entrepreneurial foundation notes] Chapter II entrepreneur test 20