| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1301 人关注过本帖
标题:发一个笔试题
只看楼主 加入收藏
hzh512
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:234
专家分:1333
注 册:2009-6-5
结帖率:76.92%
收藏
已结贴  问题点数:20 回复次数:8 
发一个笔试题
baidu第2题
寻找迷宫一条出路,'o'等于通路,'x'等于障碍,如图1。请给出走出迷宫的算法描述和代码,输出结果图2所示结果
(要求:通过“>”“V”“<”“^”表示路线及方向)
图1:
x x x x x x x x
o o o o o x x x
x o x x x x x x
x o x x x x x x
x o x x x x x x
x o x x o o o x
x o o o o x o o
x x x x x x x x
图2:
x x x x x x x x
> v o o o x x x
x v x x x x x x
x v x x x x x x
x v x x x x x x
x v x x > > v x
x v > > ^ x > >
x x x x x x x x
请补全void findpath(int x, int y)部分的代码
程序代码:
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 8

 
int H[4] = {0, 1, 0, -1};
int V[4] = {-1, 0, 1, 0};
char A[4] = {'v', '<', '^', '>'};
char maze[MAX_SIZE][MAX_SIZE] =
        {{'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x'},
         {'o', 'o', 'o', 'o', 'o', 'x', 'x', 'x'},
         {'x', 'o', 'x', 'x', 'x', 'x', 'x', 'x'},
         {'x', 'o', 'x', 'x', 'x', 'x', 'x', 'x'},
         {'x', 'o', 'x', 'x', 'x', 'x', 'x', 'x'},
         {'x', 'o', 'x', 'x', 'o', 'o', 'o', 'x'},
         {'x', 'o', 'o', 'o', 'o', 'x', 'o', 'o'},
         {'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x'}};

 
void findpath(int x, int y)
{
         //请补充该部分代码
}
int main()
{
        findpath(1, 0);
}
搜索更多相关主题的帖子: 笔试 
2010-11-28 22:20
hzh512
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:234
专家分:1333
注 册:2009-6-5
收藏
得分:0 
解法一:使用非递归
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <stack>
#include <iostream>
#define MAX_SIZE 8

using namespace std;

struct dir 
{
    int x, y;
    int d;
};

int H[4] = {0, 1, 0, -1};
int V[4] = {-1, 0, 1, 0};
char A[4] = {'<', 'V', '>', '^'};
char maze[MAX_SIZE][MAX_SIZE] =
{
{'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x'},
{'o', 'o', 'o', 'o', 'o', 'x', 'x', 'x'},
{'x', 'o', 'x', 'x', 'x', 'x', 'x', 'x'},
{'x', 'o', 'x', 'x', 'x', 'x', 'x', 'x'},
{'x', 'o', 'x', 'x', 'x', 'x', 'x', 'x'},
{'x', 'o', 'x', 'x', 'o', 'o', 'o', 'x'},
{'x', 'o', 'o', 'o', 'o', 'x', 'o', 'o'},
{'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x'}
};

void print()
{
    int i, j;
    for (i = 0; i < MAX_SIZE; i++)
    {
        for (j = 0; j < MAX_SIZE; j++)
            cout<<maze[i][j]<<' ';
        cout<<"\n";
    }
}

void findpath(int x, int y)
{
    
    //请补充该部分代码
    int mark[MAX_SIZE][MAX_SIZE]={0};
    stack<struct dir> st;
    int i, j, d;
    int g, h;
    struct dir tmp;
    tmp.x = x; tmp.y = y;tmp.d = 0;
    st.push(tmp);
    while (st.empty() == false)
    {
        tmp = st.top();
        st.pop();
        i = tmp.x; j = tmp.y; d = tmp.d; 
        while (d < 4)
        {
            g = i + H[d]; h = j + V[d];
            if (maze[g][h] == 'o' && mark[g][h] == 0)
            {
                mark[g][h] = 1;
                maze[i][j] = A[d];
                tmp.x = i; tmp.y = j; tmp.d = d;
                st.push(tmp);
                i = g; j = h; d = 0;
            }
            else
                d++;
            if (i == 6 && j == 7)
            {
                cout<<"find path \n";
                print();
                return;
            }
        }

    }
    cout << "no path!\n";
}
int main()
{
    findpath(1, 0);
    return 0;
}

编程=用几种语言在某个或几个平台上通过抽象思维运用一系列算法来解决现实中问题的手段
2010-11-28 22:21
hzh512
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:234
专家分:1333
注 册:2009-6-5
收藏
得分:0 
递归实现:

程序代码:
#include <stdio.h>
#include <stdlib.h>

#define MAX_SIZE 8

int H[4] = {0, 1, 0, -1};
int V[4] = {-1, 0, 1, 0};
//char A[4] = {'<', 'V', '>', '^'};
char A[4] = {'v', '<', '^', '>'};
char maze[MAX_SIZE][MAX_SIZE] =
{
{'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x'},
{'o', 'o', 'o', 'o', 'o', 'x', 'x', 'x'},
{'x', 'o', 'x', 'x', 'x', 'x', 'x', 'x'},
{'x', 'o', 'x', 'x', 'x', 'x', 'x', 'x'},
{'x', 'o', 'x', 'x', 'x', 'x', 'x', 'x'},
{'x', 'o', 'x', 'x', 'o', 'o', 'o', 'x'},
{'x', 'o', 'o', 'o', 'o', 'x', 'o', 'o'},
{'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x'}
};


void findpath(int x, int y)
{
    
    //请补充该部分代码
    int i,j,k;
    
    if ( x == 6 && y == 7 )
    {
        maze[x][y] = A[3];
        for ( k = 0; k < MAX_SIZE; k++ )
        {
            for( j = 0; j < MAX_SIZE; j++ )
            {
                printf ( "%c ", maze[k][j] );
            }
            printf("\n");
            
        }
        exit(0);
    }
    
    for (i = 0; i < 4; i++ )
    {
        if ( (x + V[i] >= 0)&& (x+V[i] < MAX_SIZE )&&(y+H[i] >= 0)&&(y+H[i] < MAX_SIZE )&& maze[x+V[i]][y+H[i]] == 'o' )
        {
            maze[x][y] = A[(i+2)%4];
            findpath(x+V[i],y+H[i]);
            maze[x][y] = 'o';
        }
    }
    return;
}
int main()
{
    findpath(1, 0);
    return 0;
}

编程=用几种语言在某个或几个平台上通过抽象思维运用一系列算法来解决现实中问题的手段
2010-11-28 22:27
huhao1987627
Rank: 2
等 级:论坛游民
帖 子:1
专家分:10
注 册:2010-11-10
收藏
得分:10 
好强呀,是哪个公司的笔试题,这么变态。
2010-11-29 15:23
lftp2020
Rank: 2
等 级:论坛游民
帖 子:27
专家分:81
注 册:2010-3-18
收藏
得分:10 
顶起
2010-12-03 09:24
lftp2020
Rank: 2
等 级:论坛游民
帖 子:27
专家分:81
注 册:2010-3-18
收藏
得分:0 
10fen
2010-12-05 21:49
a343637412
Rank: 7Rank: 7Rank: 7
来 自:そ ら
等 级:黑侠
帖 子:357
专家分:620
注 册:2010-9-26
收藏
得分:0 
顶.......
2010-12-20 17:35
chenzp
Rank: 2
等 级:论坛游民
帖 子:3
专家分:15
注 册:2010-12-30
收藏
得分:0 
   本人只是简单的复制黏贴然后看下运行结果,不求甚解。。。。。。。。
2010-12-30 18:27
wxh0800
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-5-17
收藏
得分:0 
最基本的啊! 别把数据结构和算法还给老师了
2011-05-17 03:56
快速回复:发一个笔试题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018714 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved