今天上人工智能,老师让用c语言写一个用深度优先搜索算法查找钥匙的程序。
题目就是说:
写出机器人找钥匙程序,并思考,如果要使此机器人程序真正实用,还必须解决哪些技术问题?

/*find the keys using depth first深度优先搜索算法查找钥匙*/
#include "stdio.h"
#include "string.h"
#define MAX 100
/*存储查找钥匙路径的数据库*/
struct KEY{
    char from[20];
    char to[20];
    char skip;
};
struct KEY keys[MAX];   /*存储上述结构的数据库*/
int f_pos=0;  /*房子里面的房间数变量*/
int find_pos=0;  /*为查找路径建立一个索引记录*/
int tos=0;   /*堆栈的栈顶*/
struct stack{
    char from[20];
    char to[20];
};
struct stack bt_stack[MAX];    /*存放查找路径的结果*/
assert_keys(from,to)
char *from,*to;
{
    if(f_pos<MAX){
        strcpy(keys[f_pos].from,from);
        strcpy(keys[f_pos].to,to);
        keys[f_pos].skip=0;   /*做个标记,表示未做过搜索*/
        f_pos++;
    }
    else printf("对不起,数据库中已经存满!!!\n");
}
setup()   
{
    assert_keys("front_door","lr");
    assert_keys("lr","bath");
    assert_keys("lr","hall");
    assert_keys("hall","bd1");
    assert_keys("hall","bd2");
    assert_keys("hall","mb");   
    assert_keys("lr","kitchen");   
    assert_keys("ketchen","keys");
}
/*入栈*/
push(from,to)
char *from,*to;
{
    if(tos<MAX){
        strcpy(bt_stack[tos].from,from);
        strcpy(bt_stack[tos].to,to);
        tos++;
    }
    else printf("Stack  full.\n");
}
/*出栈*/
pop(from,to)
char *from,*to;
{
    if(tos>0){
        tos--;
        strcpy(from,bt_stack[tos].from);
        strcpy(to,bt_stack[tos].to);
    }
    else printf("Stack underflow.\n");
}
/*用深度优先搜索算法实现查找钥匙,返回所有能找到的路径和距离*/
route()
{
    int t;
    t=0;
    while(t<tos){
        printf("%s",bt_stack[t].from);
        t++;
        if(t<tos) printf("to");
    }
    printf("\n");
}
match(from,to)
char *from,*to;
{
     register int t;
     for(t=f_pos-1;t>-1;t--)
         if(!strcmp(keys[t].from,from)&& !strcmp(keys[t].to,to))
             return 1;
     return 0;
}
/*给出起点,查找能到达的路径*/
find(from,anywhere)
char *from,*anywhere;
{
 find_pos=0;
 while(find_pos<f_pos){
     if(!strcmp(keys[find_pos].from,from)&& !keys[find_pos].skip){
          strcpy(anywhere,keys[find_pos].to);
          keys[find_pos].skip=1;
          return 1;
     }
     find_pos++;
 }
 return 0;
}
/*判断能否找到钥匙*/
iskeys(from,to)
char *from,*to;
{
    char anywhere[20];
    if(match(from,to)){
        push(from,to);  /*返回距离*/
        return;
    }
    if(find(from,anywhere)){
        push(from,to);
        iskeys(anywhere,to);
    }
    else if(tos>0){
        pop(from,to);
        iskeys(from,to);
    }
}

main()
{
    char from[20],to[20];
    setup();
    iskeys("front_door","keys");
    route(to);
    getch();
}
问题是:无论用什么样的环境,编译没有错误,问题就是没有输出结果,不晓得为什么?可是我已经在route()中做了输出了,请问这是什么问题?