鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖

[技术交流] 新手必看·DFS快速入门(鱼币~~~)

[复制链接]
发表于 2024-2-5 00:47:33 | 显示全部楼层
6x6的棋盘有4种情况
我承认这个判断斜角的方法不好,但是我没有好的方法

  1. sh-5.2$ cat main.c
  2. #include <stdio.h>
  3. #include <stdbool.h>

  4. void display(bool array[6][6]) {
  5.     for(size_t y = 0; y < 6; ++y) {
  6.         for(size_t x = 0; x < 6; ++x) {
  7.             printf("%d ", array[y][x]);
  8.         }
  9.         puts("");
  10.     }
  11.     puts("");
  12. }

  13. bool check(bool array[6][6]) {
  14.     for(size_t y = 0; y < 6; ++y) {
  15.         size_t sum = 0;
  16.         for(size_t x = 0; x < 6; ++x) {
  17.             sum += array[y][x];
  18.         }
  19.         if(sum > 1) return false;
  20.     }
  21.     for(size_t x = 0; x < 6; ++x) {
  22.         size_t sum = 0;
  23.         for(size_t y = 0; y < 6; ++y) {
  24.             sum += array[y][x];
  25.         }
  26.         if(sum > 1) return false;
  27.     }
  28.     for(size_t y = 0; y < 11; ++y) {
  29.         size_t sum = 0;
  30.         for(size_t x = 0, ny = y; x < 6; ++x, ++ny) {
  31.             if(ny < 5) continue;
  32.             if(ny >= 11) continue;
  33.             sum += array[ny - 5][x];
  34.         }
  35.         if(sum > 1) return false;
  36.     }
  37.     for(size_t y = 0; y < 11; ++y) {
  38.         size_t sum = 0;
  39.         for(size_t x = 5, ny = y; x < 6; --x, ++ny) {
  40.             if(ny < 5) continue;
  41.             if(ny >= 11) continue;
  42.             sum += array[ny - 5][x];
  43.         }
  44.         if(sum > 1) return false;
  45.     }
  46.     return true;
  47. }

  48. void chess(bool array[6][6], size_t y) {
  49.     if(y == 6) {
  50.         if(check(array)) display(array);
  51.         return;
  52.     }
  53.     for(size_t x = 0; x < 6; ++x) {
  54.         array[y][x] = true;
  55.         chess(array, y + 1);
  56.         array[y][x] = false;
  57.     }
  58. }

  59. int main(void) {
  60.     bool array[6][6] = {false};
  61.     chess(array, 0);
  62.     return 0;
  63. }
  64. sh-5.2$ ./main
  65. 0 1 0 0 0 0
  66. 0 0 0 1 0 0
  67. 0 0 0 0 0 1
  68. 1 0 0 0 0 0
  69. 0 0 1 0 0 0
  70. 0 0 0 0 1 0

  71. 0 0 1 0 0 0
  72. 0 0 0 0 0 1
  73. 0 1 0 0 0 0
  74. 0 0 0 0 1 0
  75. 1 0 0 0 0 0
  76. 0 0 0 1 0 0

  77. 0 0 0 1 0 0
  78. 1 0 0 0 0 0
  79. 0 0 0 0 1 0
  80. 0 1 0 0 0 0
  81. 0 0 0 0 0 1
  82. 0 0 1 0 0 0

  83. 0 0 0 0 1 0
  84. 0 0 1 0 0 0
  85. 1 0 0 0 0 0
  86. 0 0 0 0 0 1
  87. 0 0 0 1 0 0
  88. 0 1 0 0 0 0

  89. sh-5.2$
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-5 09:58:08 | 显示全部楼层

回帖奖励 +2 鱼币

听不懂c/c++ 只会python
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-15 05:45:45 | 显示全部楼层

回帖奖励 +2 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-2-15 05:49:57 | 显示全部楼层
帖子排版不错滴,中英文标点符号能改进更棒!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-21 11:09:21 | 显示全部楼层

回帖奖励 +2 鱼币

阿萨德
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-21 13:43:08 | 显示全部楼层

回帖奖励 +2 鱼币

感谢讲解
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-26 23:05:12 | 显示全部楼层

回帖奖励 +2 鱼币

学习编程中的Ben 发表于 2024-2-4 21:12
@yinda_peng @人造人 @sfqxx @歌者文明清理员 @alwonwang @zhangchenyvn @zhangjinxuan

新年快乐
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-28 22:01:48 | 显示全部楼层

回帖奖励 +2 鱼币

good
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-3-2 08:56:29 | 显示全部楼层

回帖奖励 +2 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-3-16 09:51:43 | 显示全部楼层
感谢感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-19 11:35:08 | 显示全部楼层

回帖奖励 +2 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-4-12 15:31:26 | 显示全部楼层

回帖奖励 +2 鱼币

加油
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-7-25 09:20:51 | 显示全部楼层

学习一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-18 22:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表