鱼C论坛

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

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

[复制链接]
发表于 2024-2-5 00:47:33 | 显示全部楼层
6x6的棋盘有4种情况
我承认这个判断斜角的方法不好,但是我没有好的方法
sh-5.2$ cat main.c
#include <stdio.h>
#include <stdbool.h>

void display(bool array[6][6]) {
    for(size_t y = 0; y < 6; ++y) {
        for(size_t x = 0; x < 6; ++x) {
            printf("%d ", array[y][x]);
        }
        puts("");
    }
    puts("");
}

bool check(bool array[6][6]) {
    for(size_t y = 0; y < 6; ++y) {
        size_t sum = 0;
        for(size_t x = 0; x < 6; ++x) {
            sum += array[y][x];
        }
        if(sum > 1) return false;
    }
    for(size_t x = 0; x < 6; ++x) {
        size_t sum = 0;
        for(size_t y = 0; y < 6; ++y) {
            sum += array[y][x];
        }
        if(sum > 1) return false;
    }
    for(size_t y = 0; y < 11; ++y) {
        size_t sum = 0;
        for(size_t x = 0, ny = y; x < 6; ++x, ++ny) {
            if(ny < 5) continue;
            if(ny >= 11) continue;
            sum += array[ny - 5][x];
        }
        if(sum > 1) return false;
    }
    for(size_t y = 0; y < 11; ++y) {
        size_t sum = 0;
        for(size_t x = 5, ny = y; x < 6; --x, ++ny) {
            if(ny < 5) continue;
            if(ny >= 11) continue;
            sum += array[ny - 5][x];
        }
        if(sum > 1) return false;
    }
    return true;
}

void chess(bool array[6][6], size_t y) {
    if(y == 6) {
        if(check(array)) display(array);
        return;
    }
    for(size_t x = 0; x < 6; ++x) {
        array[y][x] = true;
        chess(array, y + 1);
        array[y][x] = false;
    }
}

int main(void) {
    bool array[6][6] = {false};
    chess(array, 0);
    return 0;
}
sh-5.2$ ./main
0 1 0 0 0 0
0 0 0 1 0 0
0 0 0 0 0 1
1 0 0 0 0 0
0 0 1 0 0 0
0 0 0 0 1 0

0 0 1 0 0 0
0 0 0 0 0 1
0 1 0 0 0 0
0 0 0 0 1 0
1 0 0 0 0 0
0 0 0 1 0 0

0 0 0 1 0 0
1 0 0 0 0 0
0 0 0 0 1 0
0 1 0 0 0 0
0 0 0 0 0 1
0 0 1 0 0 0

0 0 0 0 1 0
0 0 1 0 0 0
1 0 0 0 0 0
0 0 0 0 0 1
0 0 0 1 0 0
0 1 0 0 0 0

sh-5.2$
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

回帖奖励 +2 鱼币

听不懂c/c++ 只会python
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-2-15 05:49:57 | 显示全部楼层
帖子排版不错滴,中英文标点符号能改进更棒!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

回帖奖励 +2 鱼币

阿萨德
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

回帖奖励 +2 鱼币

感谢讲解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

回帖奖励 +2 鱼币

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

新年快乐
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

回帖奖励 +2 鱼币

good
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-3-16 09:51:43 | 显示全部楼层
感谢感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

回帖奖励 +2 鱼币

加油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 19:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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