全国网站建设汇编,小程序app分销网站建设,加强服务保障满足群众急需m,在线制作名片基本的程序设计模式
任何的程序设计都包含IPO#xff0c;它们分别代表如下#xff1a; I#xff1a;Input 输入#xff0c;程序的输入 P#xff1a;Process 处理#xff0c;程序的主要逻辑过程 O#xff1a;Output 输出#xff0c;程序的输出
因此如果想要通过计算…基本的程序设计模式
任何的程序设计都包含IPO它们分别代表如下 IInput 输入程序的输入 PProcess 处理程序的主要逻辑过程 OOutput 输出程序的输出
因此如果想要通过计算机实现某个功能那么基本的程序设计模式包含三个部分如下 确定IPO明确需要实现功能的输入和输出以及主要的实现逻辑过程 编写程序将计算求解的逻辑过程通过编程语言进行设计展示 调试程序对编写的程序按照逻辑过程进行调试确保程序按照正确逻辑正确运行。 自顶向下-分而治之
如果要实现功能的逻辑比较复杂的时候就需要对其进行模块化设计将复杂问题进行分解转化为多个简单问题其中简单问题又可以继续分解为更加简单的问题直到功能逻辑可以通过模块程序设计实现这也是程序设计的自顶向下特点。总结如下
将一个总问题表达为若干个小问题组成的形式使用同样方法进一步分解小问题直至小问题可以用计算机简单明了的解决 举例2的斐波那契数列
自顶向下的方式其实就是使用递归来求解子问题最终解只需要调用递归式子问题逐步往下层递归的求解。
程序设计
cache {}def fib(number):if number in cache:return cache[number]if number 0 or number 1:return 1else:cache[number] fib(number - 1) fib(number - 2)return cache[number]if __name__ __main__:print(fib(35))
运行结果
自底向上-模块化集成
自底向上执行就是一种逐步组建复杂系统的有效测试方法。首先将需要解决的问题分为各个三元进行测试接着按照自顶向下相反的路径进行操作然后对各个单元进行逐步组装直至系统各
部分以组装的思路都经过测试和验证。 理解自底向上的执行思维模块化集成 自底向上分析思想
任何时候栈中符号串和剩余符号串组成一个句型当句柄出现在栈顶符号串中时就用该句柄进行归约这样一直归约到输入串只剩结束符、栈中符号只剩下开始符号此时认为输入符号串是文法的句子否则报错。 自底向上是⼀种求解动态规划问题的方法它不使用递归式而是直接使用循环来计算所有可能的结果往上层逐渐累加子问题的解。在求解子问题的最优解的同时也相当于是在求解整个问题的最优解。其中最难的部分是找到求解最终问题的递归关系式或者说状态转移方程。 14930352理解自顶向下的设计思维分而治之
⾸先要做的就是要找到“子问题”是什么。通过分析发现每次背包新装进⼀个物品就可以把剩余的承重能力作为⼀个新的背包来求解⼀直递推到承重为0的背包问题。
用 m[i,w] 表示偷到商品的总价值其中 i 表示⼀共多少个商品w 表示总重量所以求解 m[i,w]就是子问题那么看到某⼀个商品i的时候如何决定是不是要装进背包需要考虑以下
该物品的重量大于背包的总重量不考虑换下⼀个商品该商品的重量小于背包的总重量那么尝试把它装进去如果装不下就把其他东西换出来看看装进去后的总价值是不是更高了否则还是按照之前的装法极端情况所有的物品都装不下或者背包的承重能力为0那么总价值都是0
由以上的分析可以得出m[i,w]的状态转移方程为
程序设计
# 循环的⽅式自底向上求解
cache {}
items range(1,9)
weights [10,1,5,9,10,7,3,12,5]
values [10,20,30,15,40,6,9,12,18]
# 最⼤承重能⼒
W 4def knapsack():for w in range(W1):cache[get_key(0,w)] 0for i in items:cache[get_key(i,0)] 0for w in range(W1):if w weights[i]:if cache[get_key(i-1,w-weights[i])] values[i] cache[get_key(i-1,w)]:cache[get_key(i,w)] values[i] cache[get_key(i-1,w-weights[i])]else:cache[get_key(i,w)] cache[get_key(i-1,w)]else:cache[get_key(i,w)] cache[get_key(i-1,w)]return cache[get_key(8,W)]def get_key(i,w):return str(i),str(w)if __name__ __main__:# 背包把所有东西都能装进去做假设开始print(knapsack())29