求两个数差的平方损失
小张用某种仪器获得了一组观测值A,A长度为n,A中每一个数都是1-255之间的整数。但是观测值A存在一定的误差,现在小张想求得最可能的真实值B,使得:
- B中的每一个数都是1-255的整数且与A长度相同
- 0< = B(i+1) -B(i) <= 3( 0 <= i < n-1)
- A和B之间的L2损失最小(A(i)和B(i)差的平方的和最小)
要求返回最小的L2损失。
输入第一行是数据长度n(0<n<1000)
第二行是n个0-255之间的整数
返回一个整数表示L2损失
例子:
输入:
5
1 2 3 6 10
返回
1
我实现的代码JAVA:
import java.util.Scanner;
public class TwoNumberSquareLoss {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int num = sc.nextInt();
int num2[] = new int[num];
int res [] = new int[num];
for (int i = 0 ; i<num; i++){
num2[i] = sc.nextInt();
res[i] = (int)Math.pow((num - num2[i]),2);
}
int minNum = res[0];
for(int n :res){
if(n < minNum){
minNum = n;
}
}
System.out.println(minNum);
}
}
}
python也实现一个
while True:
try:
num1 = int(raw_input())
num2 = list(map(int, raw_input().split()))
res = []
for i in range(num1):
res.append(int((num1 -num2[i])**2))
print(min(res))
except:
break
对于我写的代码中感觉那里不对,欢迎大家评论
还没有评论,来说两句吧...