在数字圈中寻找出乘积最大和最小的一对数(python)实现
'''
在所示的圈中,把相隔一个数据的两个数(如1和10,3和5,3和6)称为一对数,编写算法求出乘积最大的一对数和乘积最小的一对数,输出格式:
max=?* ?= ?
min=?* ?= ?
其中?表示找到满足条件的数和乘积117 168 1012 165 19 93 158 126算法设计:1、题目中的数据有前后关系,用数组来存储。设数组定义为a[num],则有a[0]--a[num-1]共num个元素 2、用i代表下标,题目就是顺序将a(i-1)与a(i+1)相乘,求出成绩的最大值和最小值。3、关键是要使i=num-1时,保证i+1的值是0;当i=0时,保证i-1的值为num-1,即怎样将线性的数组当成圆圈操作,不难看出,把数组当成功圆圈操作通过求余运算很容易实现:当i=num-1时,(i+1)%num等于0;当i=0时,(num+i-1)%num=num-1,当i等于其他值时i,也同样适用。通过求余运算就是为了避免判别数字起点和终点的操作,其实在数据结构课程中的循环队列就是利用这种技巧实现的。4、用变量max记录当前最大的成绩m,n为对应的两个乘数;变量min记录当前最小的成绩,s,t为对应的两个乘数。
'''def main():a = []for i in range(0,100):a.append(0)max = 1min = 32767num = int(input("请输入num的值:"))print("请输入数组(圈)中的值:")for i in range(0,num):a[i] = int(input("第%d个数:" %i))for i in range(0,num+1):p = (num+i-1) % numq = (i+1) % numk = a[p] * a[q]if k > max:max = kglobal m,nm = a[p]n = a[q]if k < min:min = kglobal s,ts = a[p]t = a[q]print("max=%d * %d = %d" %(m,n,max))print("min=%d * %d = %d" %(s,t,min))if __name__ == '__main__':main()
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!