c语言深度优先搜索写[b]三连击[/b]那道题本机调试一切ok但是提交时就是显示编译错误什么鬼

[codec]

#include <stdio.h>   
int a[10],book[10],n;   
int main()   
{   
    n=9;   
    dfs(1);   
    return 0;   
}   
void dfs(int step)   
{   
    int i;   
    if(step==10)   
    {   
        if(  (a[0]*100+a[1]*10+a[2])*3==(a[6]*100+a[7]*10+a[8]) )   
        {   
            if((a[0]*100+a[1]*10+a[2])*2==(a[3]*100+a[4]*10+a[5]) )   
            printf("%d%d%d %d%d%d %d%d%d\n",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);   
        }   
        return;   
    }   
    for(i=1;i<=n;i++)   
    {   
        if(book[i]==0)   
        {   
            book[i]=1;   
            a[step-1]=i;   
            dfs(step+1);   
            book[i]=0;   
        }   
    }   
    return;   
}  

[/codec] 告诉我编译失败

foo.cpp: In function `int main()':
foo.cpp:7: error: `dfs' undeclared (first use this function)
foo.cpp:7: error: (Each undeclared identifier is reported only once for each function it appears in.)
foo.cpp: In function `void dfs(int)':
foo.cpp:13: error: `void dfs(int)' used prior to declaration
foo.cpp:36:2: warning: no newline at end of file

2015/10/28 14:54
9458