当前位置: 首页 > article >正文

洛谷_P5461 赦免战俘_python写法

        捋一下这道题的思路,理解了题目的意思之后我们知道这道题一定会用递归。

那递归的出口很简单,矩阵为1x1的时候就是题目所说的不能再细分下去的意思。

        问题就在于递归体。

        我对于递归体的理解是找到一个普适的规律,这个规律适用于每一次的递归。同时对于递归调用的方式页需要找到每次的变化。

        在做有些题目的时候他递归调用只有一次,但是这道题很显然不是一次,因为每一个矩阵都会被分成四份,那每一个小矩阵的范围都是不一样的,无法用一个式子来表示。

        针对题目的输出案例,我们来找到这一道题的规律。其实题目中也有说到,每次是左上角的矩阵值变为0。那每一次矩阵都会被分为四份,每一份的矩阵范围都不一样,且范围都与这个矩阵的边长有关。大家可以看看下面这张图。每一个小矩阵的边长都是大矩阵的一半。

        关于参数的数量我是有三个,因为在处理矩阵的时候,我们需要知道start,end,step,可以这么理解。

 

n = int(input())
l = [[1 for _ in range(2**n)]for _ in range(2**n)]
ans = 2**n
def fun(a,b,ans):
    if ans == 1:
        return
    for i in range(a,a+(ans//2)):
        for j in range(b,b+(ans//2)):
            l[i][j]=0
    fun(a + (ans // 2), b, ans // 2)
    fun(a, b + (ans // 2), ans // 2)
    fun(a + (ans // 2), b + (ans // 2), ans // 2)

fun(0,0,ans)
for i in l:
    for j in i:
        print(j,end=' ')
    print('\n',end='')


http://www.kler.cn/a/231017.html

相关文章:

  • Win32 SDK Gui编程系列之--ListView自绘OwnerDraw(续)
  • 黑马Java——集合进阶(List、Set、泛型、树)
  • C++服务器端开发(1):设计服务器架构
  • 使用python启动一个roslaunch文件
  • c#内置委托
  • 最新AI系统ChatGPT网站H5系统源码,支持Midjourney绘画局部编辑重绘,GPT语音对话+ChatFile文档对话总结+DALL-E3文生图
  • 对接快团团,如何快速高效对接快团团大团长?
  • 编程笔记 html5cssjs 075 Javascript 常量和变量
  • 使用 Visual Studio Code 在远程计算机上调试 PostgreSQL
  • FMECA实施步骤——FMEA软件
  • 2.5学习总结9
  • 电商数据采集:选择爬虫工具还是第三方API?
  • HarmonyOS 鸿蒙应用开发(十、第三方开源js库移植适配指南)
  • 构建中国人自己的私人GPT—支持中文
  • 机顶盒晶晨s905l3b芯片刷第三方系统+安卓9 root教程+armbian写入EMMC教程
  • CloudStack Agent重新安装与卸载指南
  • 【机器学习】机器学习流程之收集数据
  • 提升你的PHP开发效率:探索JetBrains PhpStorm 2022的全新特性
  • ROS笔记二:launch
  • Zoho Creator低代码平台:克服移动应用开发四大挑战的利器