我给出代码如下:和之前做数塔(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算法工程师的更多相关文章

  1. 美团Java工程师面试题(2018秋招)

    第一次面试 1.小数是怎么存的 2.算法题:N二进制有多少个1 3.Linux命令(不熟悉 4.JVM垃圾回收算法 5.C或者伪代码实现复制算法 6.volatile 7.树的先序中序后序以及应用场景 ...

  2. 2018秋招C/C++面试题总结

    一.C和C++的区别是什么? C是面向过程的语言,C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛.C中函数不能进行重载,C++函数可以重载C++在C的基础上增添类,C是一个结构化语言,它 ...

  3. 京东2018秋招c++岗 神奇数

    题意大概是: 一个数比如242,把所有数字分成两组,而且两组的和相等,那么这个数就是神奇数,此时242,能够分成{2,2}和{4},所以242是神奇数. 题目要求输入n和m求[n,m]区间内神奇数的个 ...

  4. 我的2018:OCR、实习和秋招

    真的是光阴似箭,好像昨天还沉浸在考研成功的喜悦,今天却要即将步入2019年,即将硕士毕业.老规矩,还是在每一年的最后一天总结今年以及展望明年.回首2018,经历的东西特别多,视野也开阔了不少,可以说, ...

  5. 算法是什么我记不住,But i do it my way. 解一道滴滴出行秋招编程题。

    只因在今日头条刷到一篇文章,我就这样伤害我自己,手贱. 刷头条看到一篇文章写的滴滴出行2017秋招编程题,后来发现原文在这里http://www.cnblogs.com/SHERO-Vae/p/588 ...

  6. 算法转 Java 后端,2021秋招斩获腾讯、京东、百度等大厂 offer 面经分享!|JavaGuide|Guide哥

    这是一篇来自算法转Java后端的一位读者的投稿!文章主要分享了作者从迷茫崩溃到最终斩获腾讯.京东.百度等大厂 offer 的经历.文章内容很全面.真实,相信可以对正在准备面试的小伙伴有帮助! 看到公众 ...

  7. 2021字节跳动校招秋招算法面试真题解题报告--leetcode19 删除链表的倒数第 n 个结点,内含7种语言答案

    2021字节跳动校招秋招算法面试真题解题报告--leetcode19 删除链表的倒数第 n 个结点,内含7种语言答案 1.题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. ...

  8. Java秋招面经大合集

    微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...

  9. 我的秋招经验分享(已拿BAT头条网易滴滴)

    微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...

随机推荐

  1. Java 实现线程安全的三种方式

    一个程序在运行起来的时候会转换成进程,通常含有多个线程. 通常情况下,一个进程中的比较耗时的操作(如长循环.文件上传下载.网络资源获取等),往往会采用多线程来解决. 比如显示生活中,银行取钱问题.火车 ...

  2. SIM卡中UCS2编码的三种格式(80,81,82)分析

    网上看到一篇比较好的说ucs2编码的文章,保存一下,原文地址: http://hi.baidu.com/youren4548/blog/item/fa08bd1bf61005058618bf1d.ht ...

  3. java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.getXmlStandalone()Z解决办法

    2019-05-20 23:02:20.168 |-INFO  [http-nio-8001-exec-2] com.xxx.ecc.cloudbiz.service.payment.impl.Wei ...

  4. sync_binlog=1

    MySQL提供一个sync_binlog参数来控制数据库的binlog刷到磁盘上去. sync_binlog=0,表示MySQL不控制binlog的刷新,由文件系统自己控制它的缓存的刷新.这时候的性能 ...

  5. ruby for in 循环中改变i的值无效

    ruby for in 循环中改变i的值无效 for j in 1..5 puts "#{j}hehe" j = j + 2 #break end 在循环中,使用j = j + 2 ...

  6. CodeForces - 344A Magnets (模拟题)

    CodeForces - 344A id=46664" style="color:blue; text-decoration:none">Magnets Time ...

  7. cocos2d-x 3.0游戏实例学习笔记 《跑酷》 第六步--金币&amp;岩石加入而且管理

    说明:这里是借鉴:晓风残月前辈的博客,他是将泰然网的跑酷教程,用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...

  8. Squares-暴力枚举或者二分

    B - Squares Time Limit:3500MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit  ...

  9. Django 介绍、安装配置、基本使用、Django 用户注冊样例

    Django介绍         Django 是由 Python 开发的一个免费的开源站点框架.能够用于高速搭建高性能.优雅的站点.              DjangoMTV 的思想项目架构图 ...

  10. hdu2430 Beans 单调队列

    // hdu2430 Beans 单调队列 // // 题目意思: // 求一个sum%p<=k的max(sum/p) // // 结题报告: // 技巧,先求出前缀和,并记录前i项对p取余的值 ...