用图搜索法:广度优先、深度优先和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] 下一页

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有