Python|数学|贪心|数组|动态规划|单选记录:实现保留3位有效数字(四舍六入五成双规则)|用Python来创造一个提示用户输入数字的乘法表|最小路径和

1、实现保留3位有效数字(四舍六入五成双规则)(数学,算法)

贡献者:weixin_45782673

Tips:“四舍六入五成双”规则

“四舍六入五成双”规则是一种比较精确的计数保留法,是一种数字修约规则。这里“四舍”是指≤4时舍去,“六入”是指≥6时进上,“五成双”指的是根据5后面的数字来定,当5后有数时,舍5入1;当5后无有效数字时,需要分两种情况来讲:①5前为奇数,舍5入1;②5前为偶数,舍5不进。

输入:1234 输出:1234 12 12.0 4 4.00 0.2 0.200 0.32 0.320 1.3 1.30 1.235 1.24 1.245 1.24 1.2451 1.25

选项代码:

a = input()
if '.' in a:
    a = float(a)
    if a*1000%10!=5:
        a = '%.2f'%(a)
    else:
        if len(str(a).split(".")[1])>3:
            a = '%.2f'%(a)
        else:
            if int(a*100%10%2)==1:
                a = float('%.2f'%float(int(a*100)/100))+0.01
            else:
                a = '%.2f'%float(int(a*100)/100)
    print(a)
else:
    a = int(a)
    if a>99:
        print(a)
    else:
        if 0 < a < 10:
            print('%.2f'%a)
        else:
            print(float(a))

2Python来创造一个提示用户输入数字的乘法表?(贪心)

贡献者:Light_1009

Tips:贪心算法

贪心算法,又称贪婪算法,是一种寻找最优解问题的常用方法。这种方法模式一般将求解过程分成若干个步骤,但每个步骤都应用贪心原则,选取当前状态下最好或最优的选择(局部最有利的选择),并以此希望最后堆叠出的结果也是最好或最优的解。

贪心算法有以下几个特点:

  • 贪心策略:每次决策都只考虑当前状态下的最佳选择,并不从整体上考虑其他可能影响最终结果的因素;
  • 无后效性:当前的决策不会影响到后续的决策,即每个子问题都相互独立;

如果用户选择菜单选项1,提示用户输入110之间的整数,并打印一个乘法表,显示整数1与输入整数相乘的结果,如下面的示例所示。注意:不需要检查输入的数字是否在110之间。如果用户选择菜单选项2,退出程序。如果用户在菜单选择中输入了12以外的任何内容,输出信息菜单选择错误,请重试并继续程序。结果应该如下: 1)创建乘法表 2)退出程序 请从以上菜单中选择一个选项:1 输入一个介于110之间的整数:3

1  2  3 

2  4  6 

3  6  9 

  1)创建乘法表 2)退出程序 请从以上菜单中选择一个选项:4 菜单选择错误,请重试 1)创建乘法表 2)退出程序 请从以上菜单中选择一个选项:2 谢谢你使用乘法表

选项代码可参考:

Python|位运算|递归|贪心|字符串|动态规划|单选记录:2 的幂|用Python来创造一个提示用户输入数字的乘法表|不同的子序列_打酱油的工程师的博客-CSDN博客

3最小路径和(数组,动态规划)

给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。

说明:每次只能向下或者向右移动一步。

 示例:

示例 1

输入:grid = [[1,3,1],[1,5,1],[4,2,1]]
输出:7
解释:因为路径 1→3→1→1→1 的总和最小。

示例 2

输入:grid = [[1,2,3],[4,5,6]]
输出:12

提示:

  • m == grid.length
  • n == grid[i].length
  • 1 <= m, n <= 200
  • 0 <= grid[i][j] <= 100

代码模板:

class Solution(object):
    def minPathSum(self, grid):
        """
        :type grid: List[List[int]]
        :rtype: int
        """
        height = len(grid)
        if height == 0:
            return 0
        width = len(grid[0])
        pathmap = []
        for i in range(height):
            pathmap.append([100000000000] * width)
        pathmap[0][0] = grid[0][0]
        for i in range(height):
            for j in range(width):
                compare = [pathmap[i][j]]
                if i - 1 >= 0:
                    compare.append(pathmap[i - 1][j] + grid[i][j])
                if j - 1 >= 0:
                    compare.append(pathmap[i][j - 1] + grid[i][j])
                pathmap[i][j] = min(compare)
        return pathmap[-1][-1]
# %%
s = Solution()
print(s.minPathSum(grid = [[1,2,3],[4,5,6]]))

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

打酱油的工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值