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之间的数字,甲知道两数之和,乙知道两数之积,甲问乙:“你知道是哪两个数吗?”乙说:“不知道”.乙问甲:“你知道是哪两个数吗?”甲说:“也不知道”.于是,乙说:“那我知道了”, ...
随机推荐
- 发布订阅 - 基于A2DFramework的事件机制实现
SUMMARY 能做什么 DEMO 原理图 应用场景 能做什么 A2DFramework的事件机制是基于发布订阅模式改进得来的一套API,中间件部分实现了msmq.redis.Supersocket可 ...
- 新安装的VS的一些设置
古语云:工欲善其事必先利其器 为了方便我们开发,应该设置好VS的一些配置,安装一些辅助插件 1 设置字体和背景等 设置字体为 console 10大小 背景设为护眼颜色 85 90 205 这三个值 ...
- Discuz! 的编码规范
http://open.discuz.net/?ac=document&page=dev_coderule 前言 本规范由编程原则组成,融合并提炼了开发人员长时间积累下来的成熟经验,意在帮助形 ...
- Oracle 一次生产分库,升级,迁移
今天完成了一个负载较高的中央数据库的分库操作, 并实现了oracle的滚动升级(10.2.0.1->10.2.0.4), 业务中断仅15分钟. 平台: RHEL AS 4 + Oracle 10 ...
- 解决企业In-House安装APP需HTTPS支持的问题(转载)
同事写的一篇文章,感觉不错,转过来. 解决企业In-House安装APP需HTTPS支持的问题 问题背景: 能否通过应用服务器发布企业应用: 解决iOS7.1后,发布地址必须为HTTPS服务器. 写作 ...
- 如何优雅的在MFC中使用cvSetMouseCallback?
MFC与opencv的cvSetMouseCallback用起来感觉很不兼容. 大部分时候,用cvSetMouseCallback也许只是为了获取一个矩形框,或者绘制一个点,或者其它什么简易的图形,通 ...
- C++ STL轻松导学
作为C++标准不可缺少的一部分,STL应该是渗透在C++程序的角角落落里的.STL不是实验室里的宠儿,也不是程序员桌上的摆设,她的激动人心并非昙花一现.本教程旨在传播和普及STL的基础知识,若能借此机 ...
- Hadoop - 任务调度系统比较
1.概述 在Hadoop应用,随着业务指标的迭代,而使其日趋复杂化的时候,管理Hadoop的相关应用会变成一件头疼的事情,如:作业的依赖调度,任务的运行情况的监控,异常问题的排查等,这些问题会是的我们 ...
- UIRefreshControl的使用
注意: 1.需要在ios6.0之后的版本中使用 2.UIRefreshControl目前只能用于UITableViewController,如果用在其他ViewController中,运行时会错误(即 ...
- [转]一个小试验验证对象的指针计数置为nil的情况
本文转载于新风作浪的博客专栏,博客地址:http://blog.csdn.net/duxinfeng2010/article/details/8757211 以下博客原文: 最近遇到这样一个问题,以前 ...