移动距离——第六届蓝桥杯C语言B组(省赛)第八题
原创
问题描述:
移动距离
X星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为1,2,3...
当排满一行时,从下一行相邻的楼往反方向排号。
比如:当小区排号宽度为6时,开始情形如下:
1 2 3 4 5 6
12 11 10 9 8 7
13 14 15 .....
我们的问题是:已知了两个楼号m和n,需要求出它们之间的最短移动距离(不能斜线方向移动)
输入为3个整数w m n,空格分开,都在1到10000范围内
w为排号宽度,m,n为待计算的楼号。
要求输出一个整数,表示m n 两楼间最短移动距离。
例如:
用户输入:
6 8 2
则,程序应该输出:
4
再例如:
用户输入:
4 7 20
则,程序应该输出:
5
资源约定:
峰值内存消耗 < 256M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意: main函数需要返回0
注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。
提交时,注意选择所期望的编译器类型。
解题思路:
此题较简单,最短路径很容找,两个数的(行差+列差)就是最短路径了。
代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h> int main()
{
int w,m,n;
scanf("%d%d%d",&w,&m,&n);
int a=m>n?m:n; //求出两数中较大者,用于创建数组 int row; //行数
if(a%w!=) //求出数组行数
row=a/w+;
else
row=a/w; int **arr=(int **)malloc(sizeof(int *)*row); //创建数组
int i;
for(i=;i<=row-;i++)
arr[i]=(int *)malloc(sizeof(int)*w); int j;
int k=;
for(i=;i<=row-;i++) //数组赋值
{
if(i%==) //偶数行,从左到右赋值
for(j=;j<=w-;j++)
arr[i][j]=++k;
if(i%==) //奇数行,从右到左赋值
for(j=w-;j>=;j--)
arr[i][j]=++k;
} int b=m<n?m:n; //求出较小者 int row1;
int row2;
if(a%w==) //求出较大数的行数下标
row1=a/w-;
else
row1=a/w;
if(b%w==) //求出较小数的行数下标
row2=b/w-; //减1是因为行数从0开始
else
row2=b/w;
int buk;
buk=row1-row2; //行差
int rank1;
int rank2;
for(j=;j<=w-;j++)
if(arr[row1][j]==a)
{
rank1=j; //求出较大数的列数下标
break;
}
for(j=;j<=w-;j++)
if(arr[row2][j]==b)
{
rank2=j; //求出较小数的列数下标
break;
}
buk=buk+rank1-rank2; //行差+列差
printf("%d",buk);
return ;
}
2018-03-19
移动距离——第六届蓝桥杯C语言B组(省赛)第八题的更多相关文章
- 2015年第六届蓝桥杯C/C++B组省赛题目解析
一.奖券数目 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利.虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是5位数(10000-99999),要求其中 ...
- 加法变乘法——第六届蓝桥杯C语言B组(省赛)第六题
原创 加法变乘法 我们都知道:1+2+3+ ... + 49 = 1225现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015 比如:1+2+3+...+10*11+12+...+27*28+ ...
- 三羊献瑞——第六届蓝桥杯C语言B组(省赛)第三题
原创 三羊献瑞 观察下面的加法算式: 祥 瑞 生 辉 + 三 羊 献 瑞 ------------------- 三 羊 生 瑞 气 (如果有对齐问题,可以参看[图1.jpg]) 其中,相同的汉字代表 ...
- 牌型总数——第六届蓝桥杯C语言B组(省赛)第七题
原创 牌型种数 小明被劫持到X赌城,被迫与其他3人玩牌.一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张.这时,小明脑子里突然冒出一个问题:如果不考虑花色,只考虑点数,也不考虑自己得 ...
- 积分之谜——第六届蓝桥杯C语言B组(国赛)第一题
原创 标题:积分之迷 小明开了个网上商店,卖风铃.共有3个品牌:A,B,C. 为了促销,每件商品都会返固定的积分. 小明开业第一天收到了三笔订单: 第一笔:3个A + 7个B + 1个C,共返积分:3 ...
- 2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告
2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告 勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580. 条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊.!感谢zzh ...
- 2015第六届蓝桥杯C/C++ B组
奖券数目:枚举 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利.虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是5位数(10000-99999),要求其 ...
- 递增三元数组——第九届蓝桥杯C语言B组(省赛)第六题
原创 标题:递增三元组 给定三个整数数组A = [A1, A2, ... AN], B = [B1, B2, ... BN], C = [C1, C2, ... CN],请你统计有多少个三元组(i, ...
- 第九届蓝桥杯C/C++B组省赛感想
因为做了近三年的初赛题,都对了5题+,所以这次比赛前信心满满,心里想最少水个省二没问题.可我怎么知道今年的套路居然和以前不一样了!一题深搜都没有,想想一周前做的第七届初赛题,10题有3.4题深搜题. ...
随机推荐
- Metasploit对安卓手机的攻击
首先要kali进行内网穿透,可参考http://www.cnblogs.com/sch01ar/p/7562954.html 首先生成一个apk木马 命令:msfvenom -p android/me ...
- spring 声明式事务的坑 @Transactional 注解
1.首先环境搭建,jar 我就不写了,什么一些spring-core.jar spring-beans.jar spring-content.jar 等等一些包 省略..... 直接上图: sprin ...
- leetcode189
public class Solution { public void reverse(int[] nums, int start, int end) { while (start < end) ...
- Docker入门命令备份
1.安装Docker curl -sSL https://get.docker.com/ | sh 2.将当前用户加入Docker用户组,这样就不用每次执行docker 命令时加上sudo了 3.查看 ...
- jar 运行报错:找不到或无法加载主类
NIFEST.MF文件中指定的,如下所示:Manifest-Version: 1.0Class-Path: .Main-Class: com.webex.app.Main // ...
- 强大的vim配置文件,让编程更随意 (转载)
花了很长时间整理的,感觉用起来很方便,共享一下. 我的vim配置主要有以下优点: 1.按F5可以直接编译并执行C.C++.java代码以及执行shell脚本,按“F8”可进行C.C++代码的调试 2. ...
- Apache Hive (六)Hive SQL之数据类型和存储格式
转自:https://www.cnblogs.com/qingyunzong/p/8733924.html 一.数据类型 1.基本数据类型 Hive 支持关系型数据中大多数基本数据类型 类型 描述 示 ...
- PHPexcle案例
下面是总结的几个使用方法 include 'PHPExcel.php'; include 'PHPExcel/Writer/Excel2007.php'; //或者include 'PHPExcel/ ...
- 20. Valid Parentheses检验括号字符串的有效性
[抄题]: Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if th ...
- rtx 二次开发,查找所有部门
1>rtx二次开发操作类 using System; using System.Collections.Generic; using System.Linq; using System.Text ...