用图搜索法:广度优先、深度优先和A*算法实现八数码问题 第7页
if(h == r)
{ return -2; }
else
{return -1; }
}
long check_input(char *s, char a, long r)
{ long i;
for(i=0; i < r; i++)
{ if(s[i] == a - 0x30) return 0; }
return 1;
}
long check_possible(char *begin, char *end)
{ char fs;
long f1=0, f2=0;
long i, j;
for(i=0; i < NUM; i++)
{ fs=0;
for(j=0; j < i; j++)
{
if((begin[i] != 0) && (begin[j] != 0) && (begin[j] < begin[i])) fs++;
}
f1+=fs;
fs=0;
for(j=0; j < i; j++)
{ if((end[i] != 0) && (end[j] != 0) && (end[j] < end[i])) fs++;
}
f2+=fs;
}
if((f1 & 1) == (f2 & 1)) return 1;
else
return 0;
}
void output(void)
{ long i, j, k;
char ss[NUM];
for(i=m_depth - 1; i >= 0; i--)
{ RTRANS(m_out[i].v, ss);
for(j=0; j < SIZE; j++)
{ for(k=0; k < SIZE; k++)
{ printf("%2d", ss[SIZE * j + k]);
}
printf("\n");
}
printf("\n");
}
}
int main(void)
{ char s1[NUM];
char s2[NUM];
long r;
char a;
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页