Skip to content

Commit 67f2cd1

Browse files
authoredAug 17, 2021
Update 模拟退火算法.c
1 parent c7b513f commit 67f2cd1

File tree

1 file changed

+61
-1
lines changed

1 file changed

+61
-1
lines changed
 
+61-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,61 @@
1-
#
1+
#include<cstring>
2+
#include<string>
3+
#include<iostream>
4+
#include<queue>
5+
#include<cstdio>
6+
#include<algorithm>
7+
#include<map>
8+
#include<cstdlib>
9+
#include<cmath>
10+
#include<vector>
11+
//#pragma comment(linker, "/STACK:1024000000,1024000000");
12+
13+
using namespace std;
14+
15+
#define INF 0x3f3f3f3f
16+
17+
double y;
18+
19+
double getsum(double x)
20+
{
21+
return 6*pow(x,7)+8*pow(x,6)+7*pow(x,3)+5*x*x-y*x;
22+
}
23+
24+
int main()
25+
{
26+
int T;
27+
scanf("%d",&T);
28+
while(T--)
29+
{
30+
scanf("%lf",&y);
31+
double delte=0.98;
32+
double t=100;
33+
double x=0;
34+
double ans=getsum(x);
35+
while(t>1e-8)
36+
{
37+
int flag=1;
38+
while(flag)
39+
{
40+
flag=0;
41+
double temp=x+t;
42+
if(temp>=0&&temp<=100&&getsum(temp)<ans&&fabs(ans-getsum(temp))>=1e-8)
43+
{
44+
x=temp;
45+
ans=getsum(temp);
46+
flag=1;
47+
}
48+
temp=x-t;
49+
if(temp>=0&&temp<=100&&getsum(temp)<ans&&fabs(ans-getsum(temp))>=1e-8)
50+
{
51+
x=temp;
52+
ans=getsum(temp);
53+
flag=1;
54+
}
55+
}
56+
t*=delte;
57+
}
58+
printf("%.4f\n",ans);
59+
}
60+
return 0;
61+
}

0 commit comments

Comments
 (0)