CClook 发表于 2021-6-26 10:19:34

{:5_109:}

Python操作专员 发表于 2021-6-26 16:12:57

Alanfromspace 发表于 2021-6-28 23:26:41

朕想知道

supr 发表于 2021-6-29 18:49:00

尔达的范围

Routh、 发表于 2021-7-7 11:02:45

1

李现实 发表于 2021-7-12 22:34:06

1

msj20 发表于 2021-7-13 15:49:26

zxzd

bangec 发表于 2021-7-16 16:43:31

00000000000000000

581314987 发表于 2021-7-17 16:50:22

加油

maole 发表于 2021-7-18 15:07:06

I want

JingHe1997 发表于 2021-7-23 15:08:34

真想知道

solseasky 发表于 2021-7-23 23:18:59

朕想知道

2861160067 发表于 2021-7-25 16:35:02

朕想知道

烫烫烫的锟斤拷 发表于 2021-7-27 09:36:52

朕想知道

烫烫烫的锟斤拷 发表于 2021-7-27 09:38:19

chunchun2017 发表于 2017-8-27 18:29
你这是递归啊,说是回溯法,其实也还是递归,还以为是非递归方式实现的呢
用python语句,递归瞬间搞定,

很显然,这一版论坛是在讨论c而不是python,你说的python代码也没有意义啊{:10_277:}

HiroYH 发表于 2021-7-29 22:57:05

朕想知道

lijun2001 发表于 2021-8-3 23:03:01

6

lifhv 发表于 2021-8-5 08:41:16

朕想知道

讲究怪不怪 发表于 2021-8-5 08:57:31

1

焦糖橙子 发表于 2021-8-5 15:14:56

自己乱写了一些

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define NUM 8

void queen(int checkerboard,int rank,int row);


int main(void)
{
        int checkerboard;
        memset(checkerboard,1,sizeof(checkerboard));
       
        //第一个棋子摆放的位置
        for(int i=0;i<NUM;i++)
        {
                for(int j=0;j<NUM;j++)
                {
                        queen(checkerboard,i,j);
                }
        }
}

void queen(int checkerboard,int rank,int row)
{
        if(checkerboard==1)
        {
                checkerboard=0;
                for(int i=0;i<NUM;i++)
                {
                        checkerboard=2;
                        checkerboard=2;
                        if(rank-i>0&&row-i>0)
                        {
                                checkerboard=2;
                        }
                        else if(rank+i<NUM&&row+i<NUM)
                        {
                                checkerboard=2;
                        }
                        else if(rank+i<NUM&&row-i>0)
                        {
                                checkerboard=2;
                        }
                        else if(rank-i>0&&row+i<NUM)
                        {
                                checkerboard=2;
                        }
                }       
        }
        else
        {
                if(rank<NUM&&row<NUM)
                {
                        row++;
                        queen(checkerboard,rank,row);
                }
                else if(rank<NUM)
                {
                        row=0;
                        rank++;
                        queen(checkerboard,rank,row);
                }
                else
                {
                        exit(1);
                }               
        }       
        for(int i=0;i<NUM;i++)
        {
                for(int j=0;j<NUM;j++)
                {
                        printf("%d",checkerboard);
                }
                putchar('\n');
        }
}
页: 14 15 16 17 18 19 20 21 22 23 [24] 25 26 27 28 29 30 31 32 33
查看完整版本: 通用解题思想:回溯法(附八皇后问题解析)