2018秋招blibli算法工程师
我给出代码如下:和之前做数塔(dp的入门题目)的思路一致
dp[i][j]为走到坐标(i,j)的最小减速(只有向右走和向上走两种情况)
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include <algorithm>
using namespace std;
const int maxn=;
int dp[maxn][maxn];
int main()
{int n;
scanf("%d",&n);
for(int i=;i<n;i++)
for(int j=;j<n;j++)
cin>>dp[i][j]; for(int i=;i<n;i++)//因为不走回头路所以最上面的一行和最左面一列只有一种情况
{
for(int j=;j<n;j++)
{
if(i==&&j>=)dp[i][j]+=dp[i][j-];
else if(j==&&i>=)dp[i][j]+=dp[i-][j];
else if(i>=&&j>=) dp[i][j]+=min(dp[i][j-],dp[i-][j]);
}
}
//测试
// for(int i=0;i<n;i++)
// {
// for(int j=0;j<n;j++)
// cout<<dp[i][j]<<" ";
// cout<<endl;
// }
cout<<dp[n-][n-]<<endl; return ;
}
个人代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<string>
#include <algorithm>
using namespace std;
const int maxn=;
int main()
{
string s1,s2;
int ver1[maxn];//把版本数字分离出来放在数组中
int ver2[maxn];
cin>>s1>>s2;
fill(ver1,ver1+maxn,);
fill(ver2,ver2+maxn,);
int top1=,top2=;
int sum=;
for(int i=;i<s1.size();i++)
{ if(s1[i]!='.')
{
sum=sum*+(s1[i]-'');
}
if(s1[i]=='.'||i==s1.size()-)
{
ver1[top1]=sum;
top1++;
sum=;
} }sum=;
for(int i=;i<s2.size();i++)
{
if(s2[i]!='.')
{
sum=sum*+(s2[i]-'');
}
if(s2[i]=='.'||i==s2.size()-)
{
ver2[top2]=sum;
top2++;
sum=;
} }
int f=;
for(int i=;i<(top1>=top2? top1:top2);i++)
{
if(ver1[i]>ver2[i]) {
f=;break;
}
if(ver1[i]<ver2[i]){
f=-;break;
} }cout<<f<<endl; return ;
}
解题思路:和之前写1-n*n的思路差不多,只不过这次我没有加围墙是加了一个访问数组进行判断
加围墙的思路:https://www.cnblogs.com/cstdio1/p/10903090.html
代码如下:
#include <iostream>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=;//之前maxn给的10005内存超限
int a[maxn][maxn];
bool vis[maxn][maxn];//是否访问数组 int main ()
{
int m,n;//m行n列的矩阵
int i,j; while(cin>>m&&cin>>n&&m!=-&&n!=-){ for(i=;i<m;i++)
for(j=;j<n;j++)
cin>>a[i][j]; int cnt=;//计算输出元素个数
memset(vis,,sizeof(vis));//重置标志数组
i=;j=;//初始化起点坐标
while(cnt<n*m)
{
while(j<n&&!vis[i][j])//turn right
{
cout<<a[i][j]<<(cnt==n*m-? "":",");
vis[i][j]=true;
j++;cnt++;
}i++;j--;//和之前我写1-n*n填数是一样的 while(i<m&&!vis[i][j])//turn down
{
cout<<a[i][j]<<(cnt==n*m-? "":",");
vis[i][j]=true;
i++;cnt++;
}i--;j--; while(j>=&&!vis[i][j])//turn left
{
cout<<a[i][j]<<(cnt==n*m-? "":",");
vis[i][j]=true;
j--;cnt++;
}i--;j++; while(i>=&&!vis[i][j])//turn up
{
cout<<a[i][j]<<(cnt==n*m-? "":",");
vis[i][j]=true;
i--;cnt++;
}i++;j++; }cout<<endl; } }
2018秋招blibli算法工程师的更多相关文章
- 美团Java工程师面试题(2018秋招)
第一次面试 1.小数是怎么存的 2.算法题:N二进制有多少个1 3.Linux命令(不熟悉 4.JVM垃圾回收算法 5.C或者伪代码实现复制算法 6.volatile 7.树的先序中序后序以及应用场景 ...
- 2018秋招C/C++面试题总结
一.C和C++的区别是什么? C是面向过程的语言,C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛.C中函数不能进行重载,C++函数可以重载C++在C的基础上增添类,C是一个结构化语言,它 ...
- 京东2018秋招c++岗 神奇数
题意大概是: 一个数比如242,把所有数字分成两组,而且两组的和相等,那么这个数就是神奇数,此时242,能够分成{2,2}和{4},所以242是神奇数. 题目要求输入n和m求[n,m]区间内神奇数的个 ...
- 我的2018:OCR、实习和秋招
真的是光阴似箭,好像昨天还沉浸在考研成功的喜悦,今天却要即将步入2019年,即将硕士毕业.老规矩,还是在每一年的最后一天总结今年以及展望明年.回首2018,经历的东西特别多,视野也开阔了不少,可以说, ...
- 算法是什么我记不住,But i do it my way. 解一道滴滴出行秋招编程题。
只因在今日头条刷到一篇文章,我就这样伤害我自己,手贱. 刷头条看到一篇文章写的滴滴出行2017秋招编程题,后来发现原文在这里http://www.cnblogs.com/SHERO-Vae/p/588 ...
- 算法转 Java 后端,2021秋招斩获腾讯、京东、百度等大厂 offer 面经分享!|JavaGuide|Guide哥
这是一篇来自算法转Java后端的一位读者的投稿!文章主要分享了作者从迷茫崩溃到最终斩获腾讯.京东.百度等大厂 offer 的经历.文章内容很全面.真实,相信可以对正在准备面试的小伙伴有帮助! 看到公众 ...
- 2021字节跳动校招秋招算法面试真题解题报告--leetcode19 删除链表的倒数第 n 个结点,内含7种语言答案
2021字节跳动校招秋招算法面试真题解题报告--leetcode19 删除链表的倒数第 n 个结点,内含7种语言答案 1.题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. ...
- Java秋招面经大合集
微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...
- 我的秋招经验分享(已拿BAT头条网易滴滴)
微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...
随机推荐
- Linux下SuperLU安装
SuperLU安装 1.在家目录下建立文件夹superlu,进入该目录,获取安装程序并解压缩 mkdir superlu cd superlu wget http://crd-legacy.lbl.g ...
- Python语言简介
一.Python语言发展史 1989年吉多·范罗苏姆(Guido van Rossum)中文外号“龟叔”,圣诞节期间开始编写Python语言的编译器. Python这个名字,来自Guido所挚爱的电视 ...
- Vue + Element 小技巧
说是小技巧 ,其实就是本人 就是一个小菜比 .如有大佬可以纠正,或者再救救我这个小菜比 跪谢 1.当后台返回一个字段需要根据不同字段内容在表格内显示相对应的文字(字段内容是死的,表格内需要显示对 ...
- 【例题4-2 uva489】Hangman Judge
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 水题. 中间就赢了算赢.(重复说,算错 [代码] #include <bits/stdc++.h> using name ...
- 洛谷 P1383 codevs 3333 高级打字机
题目描述 早苗入手了最新的高级打字机.最新款自然有着与以往不同的功能,那就是它具备撤销功能,厉害吧. 请为这种高级打字机设计一个程序,支持如下3种操作: 1.T x:在文章末尾打下一个小写字母x.(t ...
- /tmp目录下执行脚本失败提示Permission denied
Linux上执行Shell脚本运行失败提示Permission denied一个问题,挺好的问题,切中了知识盲点. 问题现象 Shell脚本在/tmp目录下,执行./test.sh运行失败,提示Per ...
- Linux排序命令sort(转)
Linux sort命令用于将文本文件内容加以排序.sort可针对文本文件的内容,以行为单位来排序. 语法 sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符&g ...
- Yarn的工作流程
http://study.163.com/course/courseLearn.htm?courseId=1002887002#/learn/video?lessonId=1003346099& ...
- [Sencha ExtJS & Touch] 在Sencha(Extjs/Touch)应用程序中使用plugins(插件)和mixins(混入)
原文链接:http://blog.csdn.net/lovelyelfpop/article/details/50853591 英文原文:Using Plugins and Mixins in You ...
- Java内存管理及垃圾回收总结
概述 Java和C++的一个很重要的差别在于对内存的管理.Java的自己主动内存管理及垃圾回收技术使得Java程序猿不须要释放废弃对象的内存.从而简化了编程的过程.同一时候也避免了因程序猿的疏漏而导致 ...