鱼C论坛

 找回密码
 立即注册
楼主: 小甲鱼

[扩展阅读] 通用解题思想:回溯法(附八皇后问题解析)

  [复制链接]
发表于 2021-6-28 23:26:41 | 显示全部楼层
朕想知道
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-29 18:49:00 | 显示全部楼层
尔达的范围
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-7 11:02:45 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-12 22:34:06 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-13 15:49:26 | 显示全部楼层
zxzd
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-16 16:43:31 | 显示全部楼层
00000000000000000
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-17 16:50:22 From FishC Mobile | 显示全部楼层
加油
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-18 15:07:06 | 显示全部楼层
I want
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-23 15:08:34 | 显示全部楼层
真想知道
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-23 23:18:59 | 显示全部楼层
朕想知道
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-25 16:35:02 | 显示全部楼层
朕想知道
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-27 09:36:52 | 显示全部楼层
朕想知道
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-27 09:38:19 | 显示全部楼层
chunchun2017 发表于 2017-8-27 18:29
你这是递归啊,说是回溯法,其实也还是递归,还以为是非递归方式实现的呢
用python语句,递归瞬间搞定,

很显然,这一版论坛是在讨论c而不是python,你说的python代码也没有意义啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-29 22:57:05 | 显示全部楼层
朕想知道
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-3 23:03:01 | 显示全部楼层
6
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-5 08:41:16 | 显示全部楼层
朕想知道
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-5 08:57:31 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-5 15:14:56 | 显示全部楼层
自己乱写了一些

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>

  4. #define NUM 8

  5. void queen(int checkerboard[NUM][NUM],int rank,int row);


  6. int main(void)
  7. {
  8.         int checkerboard[NUM][NUM];
  9.         memset(checkerboard,1,sizeof(checkerboard));
  10.        
  11.         //第一个棋子摆放的位置
  12.         for(int i=0;i<NUM;i++)
  13.         {
  14.                 for(int j=0;j<NUM;j++)
  15.                 {
  16.                         queen(checkerboard,i,j);
  17.                 }
  18.         }
  19. }

  20. void queen(int checkerboard[NUM][NUM],int rank,int row)
  21. {
  22.         if(checkerboard[rank][row]==1)
  23.         {
  24.                 checkerboard[rank][row]=0;
  25.                 for(int i=0;i<NUM;i++)
  26.                 {
  27.                         checkerboard[i][row]=2;
  28.                         checkerboard[rank][i]=2;
  29.                         if(rank-i>0&&row-i>0)
  30.                         {
  31.                                 checkerboard[rank-i][row-i]=2;
  32.                         }
  33.                         else if(rank+i<NUM&&row+i<NUM)
  34.                         {
  35.                                 checkerboard[rank+i][row+i]=2;
  36.                         }
  37.                         else if(rank+i<NUM&&row-i>0)
  38.                         {
  39.                                 checkerboard[rank+i][row-i]=2;
  40.                         }
  41.                         else if(rank-i>0&&row+i<NUM)
  42.                         {
  43.                                 checkerboard[rank-i][row+i]=2;
  44.                         }
  45.                 }       
  46.         }
  47.         else
  48.         {
  49.                 if(rank<NUM&&row<NUM)
  50.                 {
  51.                         row++;
  52.                         queen(checkerboard,rank,row);
  53.                 }
  54.                 else if(rank<NUM)
  55.                 {
  56.                         row=0;
  57.                         rank++;
  58.                         queen(checkerboard,rank,row);
  59.                 }
  60.                 else
  61.                 {
  62.                         exit(1);
  63.                 }               
  64.         }       
  65.         for(int i=0;i<NUM;i++)
  66.         {
  67.                 for(int j=0;j<NUM;j++)
  68.                 {
  69.                         printf("%d",checkerboard[i][j]);
  70.                 }
  71.                 putchar('\n');
  72.         }
  73. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-10 14:46:10 | 显示全部楼层
朕想知道
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-12 22:17:11 | 显示全部楼层
朕想知道
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-10 18:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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