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之间的数字,甲知道两数之和,乙知道两数之积,甲问乙:“你知道是哪两个数吗?”乙说:“不知道”.乙问甲:“你知道是哪两个数吗?”甲说:“也不知道”.于是,乙说:“那我知道了”, ...
随机推荐
- SQL Server-游标使用
IF EXISTS(SELECT *FROM sysobjects WHERE name='sp_ContestSubmit') DROP PROC sp_ContestSubmit GO -- == ...
- linq to entity 获取项的集合总数
IEnumerable<InspecReportsContextEntity> OnenewDate = lisConAll.Where(p => p.inspectime == t ...
- Android开发(二十四)——数据存储SharePreference、SQLite、File、ContentProvider
Android提供以下四种存储方式: SharePreference SQLite File ContentProvider Android系统中数据基本都是私有的,一般存放在“data/data/程 ...
- Linux所有者和组
组 添加组 groupadd 组名 查看所有组 cat /etc/group 添加成员useradd -g 组名 用户名 查看成员 cat /etc/passwd 查看用户权限 ls -l d rw ...
- 【News】SpagoBI中国官方微信对外发布
爱数据,爱分析,爱达比 致力于国际优秀开源BI应用在中国的普及推广,用数据开启中小企业智慧之门: 扫描上图二维码,关注SpagoBI中国官方微信,2015年8月18日将在腾讯课堂.百度传课.网易云课堂 ...
- ECshop鼠标划过弹出 微信扫一扫代码
效果如上图 安装步骤:1,将以下代码放到page_header.lbi里 <div class="f_l"><a href="../index.p ...
- Java 或者android 的加密技术
可以将Java文件编译之后得到的class文件(字节码)进行加密. 然后自定义一个classloader-类加载器,在载入class文件之后,对它进行解密,然后就可以正常运行了. 猜测,android ...
- 替换GitBlit的证书为域证书
GitBlit(当前版本1.6.2,http://gitblit.org/) 是一个Git版本控制的服务端,使用java编写,功能上足够满足基本的版本控制要求,而且部署很简单方便,比如windows上 ...
- win8 IIS
IIS打开页面报500错误 aspnet_regiis.exe -i 报 “此操作系统版本不支持此选项” 决解方法: 控制面板 - 程序和功能 - 启动或关闭windows功能 - Internet ...
- python 跳出嵌套循环方法
class LoopError(Exception):pass rs = '' try: for i in range(1, 3): print i rs = 'one ' if i == 1: fo ...