2014 WAP校园招聘笔试题

Problem's Link:   http://www.doc88.com/p-6751117015483.html


WAP公司笔试题

We are planning an orienteering game.
The aim of this game is to arrive at the goal (G) from the start (S) with the shortest distance.
However, the players have to pass all the checkpoints (@) on the map.
An orienteering map is to be given in the following format.
########
#@....G#
##.##@##
#..@..S#
#@.....#
########
In this problem, an orienteering map is to be given.
Calculate the minimum distance from the start to the goal with passing all the checkpoints.
Specification
* A map consists of 5 characters as following.
You can assume that the map does not contain any invalid characters and
the map has exactly one start symbol 'S' and exactly one goal symbol 'G'.
* 'S' means the orienteering start.
* 'G' means the orienteering goal.
* '@' means an orienteering checkpoint.
* '.' means an opened-block that players can pass.
* '#' means a closed-block that players cannot pass.
* It is allowed to move only by one step vertically or horizontally (up, down, left, or right) to the
next block.
Other types of movements, such as moving diagonally (left up, right up, left down and right down)
and skipping one or more blocks, are NOT permitted.
* You MUST NOT get out of the map.
* Distance is to be defined as the number of movements to the different blocks.
* You CAN pass opened-blocks, checkpoints, the start, and the goal more than once if necessary.
* You can assume that parameters satisfy following conditions.
* 1 <= width <= 100
* 1 <= height <= 100
* The maximum number of checkpoints is 18.

几个样例:

<Input>
5 4
#####
#...#
#S#G#
#####
<Output>
4

<Input>
5 5
#####
#.@@#
#S###
#..G#
#####
<Output>
9

<Input>
5 5
#####
#S..#
##G##
#..@#
#####
<Output>
6

Mean:

M

analyse:

A

Time complexity: O(n)

Source code: 

/*
* this code is made by crazyacking
* Verdict: Accepted
* Submission Date: 2015-05-21-23.40
* Time: 0MS
* Memory: 137KB
*/
#include <queue>
#include <cstdio>
#include <set>
#include <string>
#include <stack>
#include <cmath>
#include <climits>
#include <map>
#include <cstdlib>
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
#define LL long long
#define ULL unsigned long long
using namespace std; const int maxn = 1e2 + ;
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define pb push_back
std::vector<int>path;
const int INF = << ;
struct Point
{
int x, y;
bool operator < ( const Point &a )const
{
return x < a.x || ( x == a.x ) && y < a.y;
}
};
std::vector<Point>P;
char mat[maxn][maxn];
int vis[maxn][maxn];
int w, h, s, e;
int d[ << ][];
int dx[] = { -, , , };
int dy[] = {, -, , };
int dist[][];
int main() {
ios_base::sync_with_stdio( false );
cin.tie( );
while ( cin >> w >> h ) {
map<Point, int>id;
P.clear();
path.clear();
memset( d, , sizeof d );
memset( dist, , sizeof dist );
for ( int i = ; i < h; i++ ) {
scanf( "%s", mat[i] );
for ( int j = ; mat[i][j]; ++j ) {
char &c = mat[i][j];
if ( c == 'S' || c == 'G' || c == '@' ) {
P.pb( ( Point ) {i, j} );
int sz = P.size();
id[P[sz - ]] = sz;
if ( c == 'S' ) { s = sz - ; }
else if ( c == 'G' ) { e = sz - ; }
path.pb( sz - );
}
}
}
for ( int i = ; i < path.size(); i++ ) {
Point now = P[path[i]];
int x = path[i];
//out<<"x "<<x<<endl;
dist[x][x] = ;
memset( vis, , sizeof vis );
vis[now.x][now.y] = ;
queue<Point>q;
q.push( now );
//cout<<"Bfs"<<endl;
while ( !q.empty() ) {
now = q.front(); q.pop();
for ( int i = ; i < ; i++ ) {
int nx = now.x + dx[i], ny = now.y + dy[i];
if ( nx >= && nx < h && ny >= && ny < w && mat[nx][ny] != '#' && !vis[nx][ny] ) {
Point tp = ( Point ) {nx, ny};
q.push( tp );
vis[nx][ny] = vis[now.x][now.y] + ;
if ( id[tp] ) {
dist[x][id[tp] - ] = vis[now.x][now.y];
//cout<<"dist "<<x<<" to "<<id[tp]-1<<' '<<dist[x][id[tp]-1]<<endl;
}
}
}
}
}
d[ << s][s] = ;
int M = path.size();
for ( int i = ; i < ( << M ); ++i ) {
for ( int j = ; j < M; j++ ) {
int p = path[j];
for ( int k = ; << k <= i; k++ ) {
if ( i & ( << k ) ) {
d[i | ( << p )][p] = min( d[i | ( << p )][p], d[i][k] + dist[k][p] );
}
}
}
}
cout << d[( << M ) - ][e] << endl;
}
return ;
}

2014 WAP校园招聘笔试题的更多相关文章

  1. google2013校园招聘笔试题(全国)

    google2013校园招聘笔试题 1. 单项选择题1.1如果把传输速率定义为单位时间内传送的信息量(以字节计算)多少.关于一下几种典型的数据传输速率:1.使用USB2.0闪存盘,往USB闪存盘上拷贝 ...

  2. Microsoft 2013校园招聘笔试题及解答

    Microsoft 2013校园招聘笔试题及解答 题目是自己做的,求讨论.吐槽.拍砖 1.      Which of the following callingconvension(s) suppo ...

  3. Microsoft2013校园招聘笔试题

    Microsoft2013校园招聘笔试题 继续求拍砖!!!! 1. You are managing the database of a book publichser, you currently ...

  4. C# - 2017微软校园招聘笔试题 之 MS Recognition[待解决]

    MS Recognition 在线提交: hihoCoder 1402 http://hihocoder.com/problemset/problem/1402 类似: OpenJudge - I:P ...

  5. 京东2017校园招聘笔试题 【第K个幸运数】

    题目描述 4和7是两个幸运数字,我们定义,十进制表示中,每一位只有4和7两个数的正整数都是幸运数字. 前几个幸运数字为:4,7,44,47,74,77,444,447... 现在输入一个数字K,输出第 ...

  6. 九度OJ 1531 货币面值(网易游戏2013年校园招聘笔试题) -- 动态规划

    题目地址:http://ac.jobdu.com/problem.php?pid=1531 题目描述: 小虎是游戏中的一个国王,在他管理的国家中发行了很多不同面额的纸币,用这些纸币进行任意的组合可以在 ...

  7. PPS2013校园招聘笔试题

    转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/11473405 一.简答题 (1)一位老师有2个推理能力很强的学生,他告诉 ...

  8. Microsoft2013校园招聘笔试题及解答

    继续求拍砖!!!! 1. You are managing the database of a book publichser, you currently store the book orders ...

  9. 2012Google校园招聘笔试题

    1.已知两个数字为1~30之间的数字,甲知道两数之和,乙知道两数之积,甲问乙:“你知道是哪两个数吗?”乙说:“不知道”.乙问甲:“你知道是哪两个数吗?”甲说:“也不知道”.于是,乙说:“那我知道了”, ...

随机推荐

  1. 在JS中设置Select和radio选中

    <select id="Gender" name="Gender"> <option value="1">男< ...

  2. mysql性能监控工具:mycheckpoint的使用方法

    mycheckpoint 是针对mysql的一个性能监控.指标采集的python写成的工具. 工作原理说明: mycheckpoint是一段脚本,通过将其设置为crontab定时任务,每几分钟采集一次 ...

  3. 使用cxf开发webservice应用时抛出异常

    在使用cxf开发webservice应用时,报出了类似下面的错误 JAXB: [javax.xml.bind.UnmarshalException: unexpected element (uri:& ...

  4. 在WPF中使用字体图标

    一.源码描述    这是一款基于WPF窗体应用程序的字体图标示例源码,    该源码简单易懂使用于初学者和实战项目应用,    感兴趣的朋友们可以下载看看哦. 二.功能介绍    1.用ICO字体代替 ...

  5. GitLab 的 Developer 角色没有权限提交问题

    "C:\Program Files\Git\bin\git.exe" push --recurse-submodules=check --progress "origin ...

  6. [AX2012]Claims user

    AX2012可以创建一种account type为claims user的账号,这种账号不需要在AD中事先已创建用户,但是claims账号是无法通过rich client登陆到AX,它的主要应用场景是 ...

  7. JVM性能分析与优化

    JVM性能分析与优化: http://www.docin.com/p-757199232.html

  8. HTML5+javascript实现图片加载进度动画效果

    在网上找资料的时候,看到网上有图片加载进度的效果,手痒就自己也写了一个. 图片加载完后,隐藏loading效果. 想看加载效果,请ctrel+F5强制刷新或者清理缓存. 效果预览:   0%   // ...

  9. Ajax实现提交表单时验证码自动验证(原创自Zjmainstay)

    本文通过源码展示如何实现表单提交前,验证码先检测正确性,不正确则不提交表单,更新验证码. 1.前端代码 index.html <!DOCTYPE html> <html> &l ...

  10. 节日EDM系列:圣诞节如何进行EDM数据营销

    消费关系升级,消费者看中的早已不是产品本身,场景消费以及消费带来的价值感体验已成为影响消费的重要因素.圣诞将至,如何才能将圣诞节EDM数据营销的效果发挥到极致? ①  节日元素创意融合,高辨识度加深品 ...