LeetCode-36.有效的数独
一、C实现
1. 参考:https://juejin.cn/post/6893520419253714951
2. 实现
#include <stdio.h> /* 验证二维数组的打印 */ void arr_process(int (*arr)[3], int sz) { int i, j; for (i = 0; i < sz; i++) { for (j = 0; j < 3; j++) { printf("%d ", arr[i][j]); } printf("\n"); } } int is_valid_shudu_ku(int (*arr)[9], int sz) { int i, j, si, v; int row[9][10] = {{0}}; int clo[9][10] = {{0}}; int sub[9][10] = {{0}}; for (i = 0; i < sz; i++) { for (j = 0; j < 9; j++) { if (arr[i][j] != '.') { si = i/3*3 + j/3; v = arr[i][j] - '0'; //将'0'-'9' --> 0-9 if (row[i][v] == 1) { printf("row: i=%d, v=%d\n", i, v); return 0; }; row[i][v] = 1; if (clo[j][v] == 1) { printf("clo: j=%d, v=%d\n", j, v); return 0; }; clo[j][v] = 1; if (sub[si][v] == 1) { printf("sub: si=%d, v=%d\n", si, v); return 0; } sub[si][v] = 1; } } } return 1; } int main() { int arr[][9] = { {'8', '3', '.', '.', '7', '.', '.', '.', '.'}, {'6', '.', '.', '1', '9', '5', '.', '.', '.'}, {'.', '9', '8', '.', '.', '.', '.', '6', '.'}, {'8', '.', '.', '.', '6', '.', '.', '.', '3'}, {'4', '.', '.', '8', '.', '3', '.', '.', '1'}, {'7', '.', '.', '.', '2', '.', '.', '.', '6'}, {'.', '6', '.', '.', '.', '.', '2', '8', '.'}, {'.', '.', '.', '4', '1', '9', '.', '.', '5'}, {'.', '.', '.', '.', '8', '.', '.', '7', '9'}, }; printf("ret=%d\n", is_valid_shudu_ku(arr, 9)); return 0; }
本例主要使用了空间换时间的方法,简化了计算。
posted on 2025-02-16 21:31 Hello-World3 阅读(0) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2023-02-16 调度器30—调度相关结构体—p->flags
2023-02-16 调度器42—进程exit退出流程