找到表格距离的程序

时间:2016-12-11 12:51:34

标签: c

#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 ;}

有人可以帮助,因为它显示分段错误,我不知道发生了什么。

1 个答案:

答案 0 :(得分:1)

在main中,当你调用dtw时i和j分别等于iG和jG,并且超出了数组的范围。