【问题标题】:Where am I going wrong in this python code for CLRS exercise 2.1-4在这个用于 CLRS 练习 2.1-4 的 python 代码中我哪里出错了
【发布时间】:2015-07-08 18:49:15
【问题描述】:

所以问题是: “考虑将两个 n 位二进制整数相加的问题,存储在两个 n 元素数组 A 和 B 中。两个整数的和应以二进制形式存储在 (n+1) 元素数组 C 中。说明正式问题并编写伪代码以将两个整数相加。”

我解决这个问题的python代码是:

A = [1,0,1,1,0,1,0]
B = [1,1,1,0,1,0,0]
n = len(A)
C = [0,0,0,0,0,0,0,0]

for i in range(0, n):
    C[i] = A[i] + B[i] + C[i]
    if C[i] == 2:
        C[i] = 0
        C[i+1] == 1
    elif C[i] == 3:
        C[i] = 1
        C[i+1] = 1


print C

我还取了左边的最低有效数字,我可以在计算完后将其反转。

我不知道是什么错误,请帮忙!

【问题讨论】:

  • 请注意:如果您打算通过输入获取 A 和 B,定义 C 的更简单方法是 C=[0]*(n+1),它会自动生成您想要的数组。

标签: python binary addition clrs


【解决方案1】:

C[i+1] == 1 进行比较不是分配。

【讨论】:

    【解决方案2】:

    如果为了简洁起见,您希望稍作修改(伪代码):

    for i = C.length to i = 2
      C[i] = C[i] + A[i-1] + B[i-1]
      if C[i] > 1
        C[i-1] = C[i-1] + 1
        C[i] = C[i] - 2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-12
      • 1970-01-01
      • 2015-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多