割草机
来源:互联网 发布:网络主播搞笑语录 编辑:程序博客网 时间:2024/05/09 04:53
题目描述
有一块n*m的地,每块地要么长满杂草(用'W'表示),要么是空地(用'G'表示),现在有一个人站在(1,1),面向(1,m),他可以按如下两种方式移动:
2、向下移动一格,并反转面朝的方向(右变左,左变右),耗费1单位时间
现在他想知道清除所有的杂草最少需要多少单位时间(清除完杂草之后不用返回(1,1))
输入描述:
第一行n,m接下来n行每行一个字符串表示矩阵。n,m<=150
输出描述:
一行一个整数表示答案。
示例1
输入
4 5GWGGWGGWGGGWGGGWGGGG
输出
11
示例2
输入
3 3GWWWWWWWG
输出
7
解题思路:
1.从左上角第一个格子开始走,如果本行有杂草地那么最短路线中必须先将本行走完
2.然后当转到奇数行时,该从右向左查找杂草地,然后偶数行时从左向右
3.找到杂草地后,计算从上一个杂草地到这个杂草地走了多远并且加到总步数中
示例代码:
#include "stdlib.h"#include "stdio.h"#include "math.h"int main(){ int row,col; scanf("%d %d",&row,&col); char arrayMap[150][150]; for(int i=0;i<row;i++){ scanf("%s",arrayMap[i]); } //进行查找 int judge[150];//用于记录每行是否存在杂草 int number=0;//记录步数 int preRow=1,preCol=1;//记录上一个杂草的位置 行和列 for(int i=0;i<row;i++){ if(i%2!=0){//奇数行 for(int j=col-1;j>=0;j--){ if(arrayMap[i][j]=='W'){ judge[i] = 1; number = number+abs(j+1-preCol); //找到杂草位置 加上所走的步数 preCol = j+1; //记录当前杂草位置的列 preRow = i+1; //printf("%d %d\n",i,number); } } } else{//偶数行 for(int j=0;j<col;j++){ if(arrayMap[i][j]=='W'){ judge[i] = 1; number = number+abs(j+1-preCol); //找到杂草位置 加上所走的步数 preCol = j+1; //记录当前杂草位置的列 preRow = i+1; //printf("%d %d\n",i,number); } } } if(i!=(row-1)) number++;//向下走一格 步数加一 } for(int i=row-1;i>=0;i--){ if (judge[i]==1) { break; } else{ if(number>0) number--; else number=0; } } printf("%d\n",number); return 0;}
阅读全文
0 0
- 割草机
- 割草机
- Wannafly挑战赛4 C 割草机
- Wannafly挑战赛4 C 割草机
- 我的小飞机-割草机1号
- C语言 良乡足球场 割草机问题
- 牛客网Wannafly挑战赛4(割草机)
- 牛客网Wannafly挑战赛4 C.割草机(模拟)
- wannafly挑战赛4 C-割草机 思维
- Wannafly 挑战赛 4 C 题 割草机 【模拟】
- wannafly挑战赛4C-水题&思维-割草机
- newCoder Wannafly挑战赛4:C 割草机
- Wannafly挑战赛4 C割草机 模拟
- Wannafly挑战赛4,C题割草机,(模拟)
- JAVA之for循环99乘法表
- Java GC(绝对干货)
- DeepLearningAI 学习笔记 1.2 logistic 回归
- 可替代NPM的快速可信赖包管理工具Yarn
- 【分布式学习】为什么需要高质量API网关接口
- 割草机
- Unity 异步加载图片
- Isim 仿真卡死问题分析
- 50个Java多线程面试题
- CentOS常用指令
- 面试杂谈
- DeepLearningAI 学习笔记 1.3 浅层 logistic 神经网络
- java之Cookie详解
- RocketMQ快速入门