【华为OJ】【102-二维数组操作】

来源:互联网 发布:视频播放器for mac 编辑:程序博客网 时间:2024/06/11 22:14

【华为OJ】【算法总篇章】


【华为OJ】【102-二维数组操作】

【工程下载】


题目描述

有一个数据表格为二维数组(数组元素为int类型),行长度为ROW_LENGTH,列长度为COLUMN_LENGTH。对该表格中数据的操作可以在单个单元内,也可以对一个整行或整列进行操作,操作包括交换两个单元中的数据;插入某些行或列。请编写程序,实现对表格的各种操作,并跟踪表格中数据在进行各种操作时,初始数据在表格中位置的变化轨迹。详细要求:1.数据表规格的表示方式为“行*列”, 数据表元素的位置表示方式为[行,列],行列均从0开始编号2.数据表的最大规格为9行*9列,对表格进行操作时遇到超出规格应该返回错误3.插入操作时,对m*n表格,插入行号只允许0~m,插入列号只允许0~n。超出范围应该返回错误4.只需记录初始表格中数据的变化轨迹,查询超出初始表格的数据应返回错误例如:  初始表格为4*4,可查询的元素范围为[0,0]~[3,3],假设插入了第2行,数组变为5*4,    查询元素[4,0]时应该返回错误5.查询数据要求返回一个链表,链表中节点的顺序即为该查询的数据在表格中的位置变化顺序(需包含初始位置)

输入描述

输入数据按下列顺序输入:1 表格的行列值2 要交换的两个单元格的行列值3 输入要插入的行的数值4 输入要插入的列的数值5 输入要获取运动轨迹的单元格的值

输出描述

输出按下列顺序输出:1 初始化表格是否成功,若成功则返回0, 否则返回-12 输出交换单元格是否成功3 输出插入行是否成功4 输出插入列是否成功5 输出要查询的运动轨迹的单元查询是否成功

输入例子

3 41 10 1212 2

输出例子

00000

算法实现

import java.util.Scanner;/** * Author: 王俊超 * Date: 2016-05-05 10:09 * CSDN: http://blog.csdn.net/derrantcm * Github: https://github.com/Wang-Jun-Chao * Declaration: All Rights Reserved !!! */public class Main {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);//        Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));        while (scanner.hasNext()) {            int[] arr = new int[10];            for (int i = 0; i < 10; i++) {                arr[i] = scanner.nextInt();            }            System.out.print(solve(arr));        }        scanner.close();    }    private static String solve(int[] arr) {        int[] result = new int[5];        // 检查行列值        if (arr[0] < 0 || arr[0] > 9 || arr[1] < 0 || arr[1] > 9) {            result[0] = -1;        } else {            result[0] = 0;        }        // 检查交换单元格是否合法        if (result[0] == 0 && (arr[2] >= 0 && arr[2] < arr[0] && arr[3] >= 0 && arr[3] < arr[1])                && (arr[4] >= 0 && arr[4] < arr[0] && arr[5] >= 0 && arr[5] < arr[1])) {            result[1] = 0;        } else {            result[1] = -1;        }        // 检查插入行是否成功        if (result[0] == 0 && (arr[6] >= 0 && arr[6] < arr[0])) {            result[2] = 0;        } else {            result[2] = -1;        }        // 检查插入列是否成功        if (result[0] == 0 && (arr[7] >= 0 && arr[7] < arr[1])) {            result[3] = 0;        } else {            result[3] = -1;        }        // 检查访问是否成功        if (result[0] == 0 && (arr[8] >= 0 && arr[8] < arr[0] && arr[9] >= 0 && arr[9] < arr[1])) {            result[4] = 0;        } else {            result[4] = -1;        }        StringBuilder b = new StringBuilder();        for (int i : result) {            b.append(i).append('\n');        }        return b.toString();    }}
2 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 网易云音乐上传作品编辑失败怎么办 手机连了wifi后自动扣费怎么办 店铺被低价拍了一部分商品该怎么办 淘宝买家退货快递单号填错了怎么办 卖家同意退款了买家不退货怎么办 淘宝代购衣服有破损不给退怎么办 网上购飞机票身份证号写错了怎么办 交易猫买家把我号清了怎么办 光大普卡额度4万封顶了怎么办 天天特价通过后价格设置错误怎么办 苏宁易购不小心点了免密支付怎么办 别人知道自己京东的账号密码怎么办 oppo手机刷机要锁屏密码怎么办 在苏宁易购退款成功又收到货怎么办 今日头条转发出现未安装微信怎么办 打开手机后自动弹出广告怎么办去除 朋友圈发广告被腾讯屏蔽了怎么办 新商盟手机订烟登录密码忘了怎么办 手机版战神斯巴达幽灵经常崩怎么办 代购买的东西被海关扣了怎么办 托朋友代购给了钱联系不上人怎么办 签了合同被加盟商骗了怎么办 百度云盘下载时本地空间不足怎么办 百度云盘隐私空间没密码忘了怎么办 华为云空间的帐号密码忘记了怎么办 快递被快递公司弄丢了怎么办 快递到了人不在那个地方了怎么办 微信被骗了1千多怎么办 客户货已经用啦要求退款退货怎么办 网购收到别人退货的东西怎么办 好省输入订单编号查不到订单怎么办 快递没有当面验收后发现损坏怎么办 支付宝电脑付款风控异常怎么办 京东买东西地址填错了怎么办 商场卖的衣服跟官网差价大怎么办 网购的衣服有好几个破洞怎么办 出租发票有牌号是假的怎么办 支付宝里的多收多保被降级了怎么办 超市购物卡余额与实际不符怎么办 发广告的公众号无法取消关注怎么办 扣扣需要手机验证码登录怎么办