自从我上周开始尝试按条件对N个元素的数组进行排序时,我的思绪就被吹了:2个元素之间的差异总是小于或等于接下来的2个元素.例如:
?[4] = { 10, 2, 7, 4}
Run Code Online (Sandbox Code Playgroud)
可以通过这种方式重新排列该数组:
{2, 7, 10, 4} 因为 (2 - 7 = -5) < (7 - 10 = -3) < (10 - 4 = 6)
{4, 10, 7, 2} 因为 (4 - 10 = -6) < (10 - 7 = 3) < (7 - 2 = 5)
我考虑的一个解决方案就是改组阵列并每次检查它是否符合条件,这是一种有效的方法,适用于少量元素,但对于大量元素而言耗时甚至不可能.
另一个尝试用循环移动数组周围的元素,希望再次满足要求,但是这种方法再次非常耗时,有时也是不可能的.
试图找到一个算法似乎没有任何结果,但必须有一些东西.
非常感谢你提前.
我试图使用积分计算图形的面积.
用户应该给我3个号码:
但是,我一直得到错误的结果.
我遇到的第一个困难是范围只接受整数.
此外,z=(x2-x1)/N如果我尝试使它成为一个浮点数,我不能让它继续前进,我不会使它浮动它接近零,所以Python向我显示步骤为零的错误.
另外我该如何总结(z*(f(i)+f(i+z)/2)?
这是我的代码:
# -*- coding: UTF-8 -*-
import math
def f(x) :
y = (-1/6.0)*(x-1)*(x-2)*(x+2)*(x-4)
return y
x1=int(raw_input ('????? ?? ?1 ???? ??????? ? ??????? ??? ????????????? \n ')) #greek letters
x2=int(raw_input ('????? ?2 ???? ?????? ?? ????????????? ? ??????? \n '))
N=int(raw_input('????? ??? ?????? n ??? ?? ????? ?? ?????? \n ??? ????????? ??? ?? ??????????????? ??? ??????????? \n '))
z=(x2-x1)/N
for i in range(x1,x2,z):
z=float(z) …Run Code Online (Sandbox Code Playgroud)