数据结构与算法 习题-第一章

def is_multiple(n,m):
	k=n%m
    return (k==0)
n=int(input('请输入一个整数:'))
m=int(input('请输入一个整数:'))
is_multiple(n,m)  

 

def is_even(k):
    while k > 1:
        k = k - 2
    return (k == 0)
is_even(abs(int(input('请输入一个整数:'))))

def minmax(data):    
    minv = data[0]
    maxv = data[0]
    for item in data:
        if minv > item:
            minv = item
        if maxv < item:
            maxv = item
    return minv, maxv    
data=list(input('请输入一个列表:'))
date=[]
for i in range(len(data)):
    date.append(int(data[i]))
minmax(date)

def add(n):
    a=0
    for i in range(n+1):
     a+=i*i
    return a 
n=int(input('请输入一个正整数n:'))
add(n)

def add(n):
    return sum(i*i for i in range(n+1)) 
n=int(input('请输入一个正整数n:'))
add(n)

def add(n):
    a=0
    for i in range(n+1):
        if i%2 != 0:
            a+=i*i
        else:
            continue
    return a 
n=int(input('请输入一个正整数n:'))
add(n)

def add(n):
    return sum(i*i for i in range(n+1) if i%2!=0) 
n=int(input('请输入一个正整数n:'))
add(n)

def st(a):
    n=len(a)
    for k in range(-n,0):
        b=a[k]
        j=n+k
        c=a[j]
    return  (b==c)
a=input('请输入一个字符串:')
st(a)

list(range(50,81,10))

 

     [2**i for i in range(9)]    或者   list(map(lambda:2**i,range(9)))

import random
a=[1,2,'a','b',7,'7']
b=len(a)
c=a[random.randrange(b)]

def rever():
   a=range(10)
   b=a[::-1]
   c=reversed(a)
   return list(b),list(c)
rever()

def bel(a):
    n=len(a)
    for i in range(n):
        for j in range(n):
            if a[i]*a[j] % 2 != 0:
                if i==j:
                    continue
                else:
                    return i,j
a=[1,6,7,0,2,6]
bel(a)   #也可以直接判断是否有两个不一样的奇数

def compare(a):
    b=set(a)
    if len(b)==len(a):
        return True
    else:
        return False
a=[1,2,3,6,3,8]
compare(a)

#利用Unicode码来显示,二十六个字母每两个之间的Unicode码相差1,其中ord函数是编译成Unicode,chr是将Unicode解码

a=list(map(lambda x: chr(ord('a')+x ),range(26)))

def function():
    inputStack = []
    while True:
        try:
            temp = input()
            inputStack.append(temp)
        except KeyboardInterrupt:
            while len(inputStack) != 0:
                inputStack.pop()

def function(a,b):
    c=[]
    for i in range(len(a)):
        c.append(a[i]*b[i])
    return c
a=[1,2,5,8]
b=[6,7,9,2]
function(a,b)


def myMut2(a, b):
    import numpy as np
    return np.array(a) * np.array(b)

def function23(data, i):
    try:
        return data[i]
    except IndexError:
        print("Don't try buffer overflow attacks in Python!")

def function (b):
    a=['a','A','e','E','i','I','o','O','u','U']
    c=0
    for i in range(len(b)):
        if b[i] in a:
            c+=1
    return c
b=input('请输入一个字符串:')
function(b)

 

def function(a,b,c):
    return(a+b==c or a-b==c or a*b==c)
a=int(input('a:'))
b=int(input('b:'))
c=int(input('c:'))
function(a,b,c)

def function():
    temp = input("Please input three numbers!\n")
    nums = list(temp.split(" "))
    a = int(nums[0])
    b = int(nums[1])
    c = int(nums[2])
    if (a + b == c) or (a == b - c) or ( a * b == c):
        return True
    else:
        return False
function()

def factors(n):
    k = 1
    temp = []
    while k * k < n:
        if n % k == 0:
            yield k
            temp.append(n // k) 
        k += 1
    if k * k == n:
        yield k
    for item in temp[::-1]:
        yield item

def norm(v,p):
    a=0
    for i in range(len(v)):
        a+=(v[i])**p
        a=a**(1/p)
    return a
v=[1,2,3,8,9]
p=2
norm(v,p)

def function29():
    temp = ['c', 'a', 't', 'd', 'o', 'g']
    from itertools import permutations 
    print(list(map(''.join, permutations(temp))))
    

intertool模块是一个迭代器的模块,会产生无限迭代;关于这个模块的介绍  [https://www.jb51.net/article/55626.htm]

def function (a):
    i=0
    while a>2:
        a= a/2
        i+=1
    return i
a=int(input('请输入一个大于2的正整数:'))
function(a)

def pay(a,b):
    c=b-a  #所需找回的钱
    coins={'0.1':0,'0.5':0,'1':0,'5':0,'10':0,'20':0,'50':0,'100':0}
    coins['100']=c//100
    c=c%100
    coins['50']=c//50
    c=c%50
    coins['20']=c//20
    c=c%20
    coins['10']=c//10
    c=c%10
    coins['5']=c//5
    c=c%5
    coins['1']=c//1
    c=c%1
    coins['0.5']=c//0.5
    c=c%0.5
    coins['0.1']=c//0.1
    c=c%0.1
    return coins
a=float(input('需要支付的钱:'))
b=float(input('所给的钱:'))
pay(a,b)

a=input('请输入需要计算的内容:\n')
b=eval(a)
print(b)

def function():
    d=list(set(a))#字典是不可索引的,
    b=[] #元组是不可改变的,因此元组没有append方法
    for  i in range(len(d)):
        b.append((d[i],0))
    b=dict(b)
    for i in range(len(a)):
        if a[i] in d:
            b[a[i]]+=1
    return b    
a=input('输入单词列表:').split(' ')
function()
#例子
class Creditcard:
    def __init__(self,customer,bank,acnt,limit):
        self.customer=customer
        self.bank=bank
        self.account=acnt
        self.limit=limit
        self.balance=0
    def get_customer(self):#return  name of customer
        return self.customer
    def get_bank(self): # return the name of the bank
        return self.bank
    def get_account(self):
        return self.account
    def get_limit(self):
        return self.limit
    def get_balance(self):
        return self.balance
    def charge(self,price):
        self.price=price
        if self.price+self.balance >self.limit:
            return False
        else:
            self.balance+=self.price
            return True
    def make_payment(self,amount):
        self.balance-=amount


if __name__ == '__main__':
  wallet = []
  wallet.append(Creditcard('John Bowman', 'California Savings',
                           '5391 0375 9387 5309', 2500) )
  wallet.append(Creditcard('John Bowman', 'California Federal',
                           '3485 0399 3395 1954', 3500) )
  wallet.append(Creditcard('John Bowman', 'California Finance',
                           '5391 0375 9387 5309', 5000) )

  for val in range(1, 17):
    wallet[0].charge(val)
    wallet[1].charge(2*val)
    wallet[2].charge(3*val)

  for c in range(3):
    print('Customer =', wallet[c].get_customer())
    print('Bank =', wallet[c].get_bank())
    print('Account =', wallet[c].get_account())
    print('Limit =', wallet[c].get_limit())
    print('Balance =', wallet[c].get_balance())
    while wallet[c].get_balance() > 100:
      wallet[c].make_payment(100)
      print('New balance =', wallet[c].get_balance())
    print()

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
第一章 绪论作业答案(共50分) 一、分析如下程序中 (1)~ (10)各语句的频度。(每个1分,共10分) Ex( ) { int i , j , t ; (1) for( i=1 ; i<10 ; i++) //n = (2) printf(“\n %d” , i ); //n = (3) for(i=1; i<=2; i++) //n = (4) printf(“\n”); //n = (5) for(i=1; i<=9; i++) //n = { (6) for(j=1; j <= i ; j++) //n = { (7) t = i * j ; //n = (8) printf(“]”,t); //n = } (9) for(j=1; j 0) { if(x > 100) {x -= 10 ; y -- ;} else x ++ ; } 问if 语句执行了多少次?(2分) y--执行了多少次?(2分) x ++执行了多少次?(2分) 三、回答问题(共25分) 书中16页的起泡排序如下: void bubble_sort(int a[],int n){ //将a中整数序列重新排列成自小至大有序的整数序列。 for(i=n-1,change=TRUE;i>=1&&change;--i){ change=FALSE; for(j=0;ja[j+1]{a[j]<-->a[j+1];change=TRUE; } } }//bubble_sort 1.(共15分)分析该算法的最佳情况 ,最坏情况和平均情况下各自的时间复杂度(给出分析思路与过程)。 (1) 最佳情况的时间复杂度分析(5分): (2) 最坏情况的时间复杂度分析(5分): (3) 平均情况的时间复杂度分析(5分): 2.(共10分)比较与C语言书中的起泡排序异同,并从时空效率角度说明谁更优。 四、完成如下选择题(每3分,共9分)。 1. 设f为原操作,则如下算法的时间复杂度是( )。 for (i = 1; i*i=1;i--) for(j=1;jA[j+1]) A[j]与A[j+1]对换; 其中n为正整数,则算法在最坏情况下的时间复杂度为( )。 A.O(n) B.O(nlog2n) C. O(n3) D. O(n2)

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zero _s

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

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

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

打赏作者

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

抵扣说明:

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

余额充值