#include <stdio.h>
#include <stdlib.h>
double dtw(int ,int ,double*,double*);
int main(void){
int iG,jG,i,j;
double dtwtemp;
printf("give the 1st size : ");
scanf("%d",&iG);
printf("\n");
printf("give the 2st size : ");
scanf("%d",&jG);
printf("\n");
double *a=malloc(iG*sizeof(double));
double *b=malloc(jG*sizeof(double));
for(i=0;i<iG;i++){
printf("give %d number of first table ",i+1);
scanf("%lf",&a[i]);
printf("\n");
}
printf("----------------\n");
for(j=0;j<jG;j++){
printf("give %d number of second table ",j+1);
scanf("%lf",&b[j]);
printf("\n");
}
for(i=0;i<iG;i++){
printf("%.2f ",a[i]);}
printf("\n");
for(j=0;j<jG;j++){
printf("%.2f ",b[j]);}
dtw(i,j, &a , &b );
}
double dtw(int i ,int j ,double *a ,double *b){
double dtwmin,dtwtemp;
dtwtemp=(a[i]-b[j])*(a[i]-b[j]);
if (i>1){
if (j>1){
dtwmin=dtw( i,j,&a[(i-1)],&b[j]);
if (dtwmin>dtw(i,j,&a[i],&b[(j-1)]))
dtwmin=dtw(i,j,&a[i],&b[(j-1)]);
if (dtwmin>dtw(i,j,&a[(i-1)],&b[(j-1)]))
dtwmin=dtw(i,j,&a[(i-1)],&b[(j-1)]);
}
else
dtwmin=dtw(i,j,&a[(i-1)],&b[1]);
}
else{
if (j>1)
dtwmin=dtw(i,j,&a[1],&b[(j-1)]);
else
dtwmin=dtw(i,j,&a[1],&b[1]);
}
return dtwtemp+dtwmin ;}
有人可以帮助,因为它显示分段错误,我不知道发生了什么。
答案 0 :(得分:1)
在main中,当你调用dtw时i和j分别等于iG和jG,并且超出了数组的范围。