这是·一道动态规划问题
#include <stdio.h>
#include<string.h>
#include<limits.h>
int edit(char *s1,char *s2)
{
int i,j;
int m = strlen(s1);
int n = strlen(s2);
int dp[m+1][n+1];
for(i = 0;i < m+1;i++)
{
dp[i][0] = i;
}
for(j = 0;j < n+1;j++)
{
dp[0][j] = j;
}
for(i = 1;i < m+1;i++)
{
for(j = 1;j < n+1;j++)
{
if(s1[i-1] = s2[j-1])
dp[i][j] = dp[i-1][j-1];
else
{
dp[i][j] = ((dp[i-1][j]<dp[i][j-1])?dp[i-1][j]:dp[i][j-1])+1;
}
}
}
return dp[m][n];
}
void Similar(char *S,int n,char *T[])
{
int i,j;
int count[n];
for(i = 0;i < n;i++)
{
count[i] = edit(S,T[i]);
}
for(i = 0;i < n;i++)
{
for(j = 0;j < n-i-1;j++)
{
int temp;
if(count[j]>count[j+1])
{
temp = count[j];
count [j] = count[j+1];
count[j+1] = temp;
}
char *Temp[51];
{
strcpy(Temp,T[j]);
strcpy(T[j],T[j+1]);
strcpy(T[j+1],Temp);
}
}
}
for(i = 0;i <n;i++)
{
printf("%s",T[i]);
}
}
int main()
{
char S[51];
int n;
scanf("%s",S);
scanf("%d",&n);
char *T[n];
for(int i=0;i<n;i++)
{
scanf("%s",T[i]);
}
Similar(S,n,T);
return 0;
}
结果却是这样,到底是哪里的问题