2014 WAP校园招聘笔试题
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校园招聘笔试题的更多相关文章
- google2013校园招聘笔试题(全国)
google2013校园招聘笔试题 1. 单项选择题1.1如果把传输速率定义为单位时间内传送的信息量(以字节计算)多少.关于一下几种典型的数据传输速率:1.使用USB2.0闪存盘,往USB闪存盘上拷贝 ...
- Microsoft 2013校园招聘笔试题及解答
Microsoft 2013校园招聘笔试题及解答 题目是自己做的,求讨论.吐槽.拍砖 1. Which of the following callingconvension(s) suppo ...
- Microsoft2013校园招聘笔试题
Microsoft2013校园招聘笔试题 继续求拍砖!!!! 1. You are managing the database of a book publichser, you currently ...
- C# - 2017微软校园招聘笔试题 之 MS Recognition[待解决]
MS Recognition 在线提交: hihoCoder 1402 http://hihocoder.com/problemset/problem/1402 类似: OpenJudge - I:P ...
- 京东2017校园招聘笔试题 【第K个幸运数】
题目描述 4和7是两个幸运数字,我们定义,十进制表示中,每一位只有4和7两个数的正整数都是幸运数字. 前几个幸运数字为:4,7,44,47,74,77,444,447... 现在输入一个数字K,输出第 ...
- 九度OJ 1531 货币面值(网易游戏2013年校园招聘笔试题) -- 动态规划
题目地址:http://ac.jobdu.com/problem.php?pid=1531 题目描述: 小虎是游戏中的一个国王,在他管理的国家中发行了很多不同面额的纸币,用这些纸币进行任意的组合可以在 ...
- PPS2013校园招聘笔试题
转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/11473405 一.简答题 (1)一位老师有2个推理能力很强的学生,他告诉 ...
- Microsoft2013校园招聘笔试题及解答
继续求拍砖!!!! 1. You are managing the database of a book publichser, you currently store the book orders ...
- 2012Google校园招聘笔试题
1.已知两个数字为1~30之间的数字,甲知道两数之和,乙知道两数之积,甲问乙:“你知道是哪两个数吗?”乙说:“不知道”.乙问甲:“你知道是哪两个数吗?”甲说:“也不知道”.于是,乙说:“那我知道了”, ...
随机推荐
- Codeforces Round #382 (Div. 2)C. Tennis Championship 动态规划
C. Tennis Championship 题目链接 http://codeforces.com/contest/735/problem/C 题面 Famous Brazil city Rio de ...
- 一个winform带你玩转rabbitMQ
源码已放出 https://github.com/dubing/MaoyaRabbit 本章分3部分 一.安装部署初探 二.进阶 三.api相关 安装 部署 初探 先上图 一. 安装部署 下载 rab ...
- 本人独立博客:http://www.zjmainstay.cn
为了方便各种管理,本人创建了独立博客,博客地址:http://www.zjmainstay.cn 欢迎新老朋友围观.
- Controller_Abstract的改造
Controller_Abstract 是所有Controller的父类,改造它可以节省很多时间. 比如execute方法,execute是每个action执行时都在执行的方法. function e ...
- POJ 2078 Matrix
Matrix Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 3239 Accepted: 1680 Descriptio ...
- 年底奉献-QT编写视频监管平台(开源)
忙忙碌碌又是一年,算算自己毕业四年半,一直在现在这家公司做研发外加总经理助理,研发起初用的VB.NET,而后全面转为C#,最后又全面转为QT,都是由于项目需要,算下来自己搞QT编程也已经四年了,201 ...
- log4net使用的关键点
<configSections> < section name =" log4net" type="log4net.Config.Log4Net ...
- HTTP 详解一 -- 转
HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1.0的第 ...
- STM32 程序所占用空间计算 && FLASH存储的起始地址计算
程序编译完成,会乘车program size .. 对STM32容量选型或者 计算FLASH 充当EEPROM起始地址时会用到此参数. 按照下面截图 程序空间 = (16700+732+4580)/ ...
- Cannot find SS.INI file for user *** 解决方法
昨天还用的好好的VSS今天早上一来就提示: Cannot find SS.INI file for user *** 度娘了一下,好像都是说的: 1,vss\users\***\ 下无文件SS.IN ...