-
Notifications
You must be signed in to change notification settings - Fork 0
/
dphe.c
68 lines (38 loc) · 864 Bytes
/
dphe.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
double minp(double a,double b){return a<b?a:b;}
double min_cost(int a[],int n,int p,int q){
int i;
double mint;
if(p>n-1 || q>n-1)return 9999.0000;
if(p>q)return 9999.0000;
if(q-p==1)return sqrt(a[q]-a[p]+1);
if(p==q)return sqrt(1.0000);
mint=9999.0000;
for(i=p;i<n-1;i++)
mint=minp(mint,minp(sqrt((double)a[q]-a[p]+1),min_cost(a,n,p,i)+min_cost(a,n,i+1,q)));
return mint;
}
double min_cost_util(char *a,int n){
int i,j;
int *b=(int*)malloc(sizeof(int)*n);
j=0;
for(i=0;i<n;i++) {
if(*(a+i)=='0'){
// printf("%d",i);
*(b+j)=i+1;
j++;}
}
// return 2.0000;
return min_cost(b,j,0,j-1);
}
int main(){
int n;
// char a[]="0101110";
int a[]={1,3,7};
n=strlen(a);
printf("%.04f",min_cost(a,3,0,2));
return 0;
}