[编程题] 棋子翻转

链接:https://www.nowcoder.com/questionTerminal/b0d2c7f3a5b1429ba41997dc935f2594
来源:牛客网

时间限制:

C/C++ 1秒,其他语言2秒空间限制:C/C++ 256M,其他语言512M。

在4*4的棋盘上摆满了黑白棋子,黑白两色的位置和数目随机其中左上角坐标为(1,1),右下角坐标为(4,4),现在依次有一些翻转操作,要对一些给定支点坐标为中心的上下左右四个棋子的颜色进行翻转,请计算出翻转后的棋盘颜色。

思路是分四种情况。分别计算有上棋子的情况、有下棋子、有左棋子、有右棋子的情况。

补充

二维数组里面,竖列为x,横列为y。

在Java中,步骤^ = 1是什么意思?

^代表XOR运算符。
它位于赋值运算符类别之下

 += -= *= /= %= &= ^= |= <<= >>= >>>=

^= 表示 按位异或和赋值运算符

step ^=1;与step = step ^ 1;相同

正如其他人所指出的那样,step ^=1翻转step的最低位。这使偶数数字变大1,奇数数字变小1。

示例:

 0 --> 11 --> 07 --> 6   二进制转换为 111 -->1106 --> 7 二进制转换为 110 --> 111
-3 --> -4

参考

https://www.thinbug.com/q/27916151

代码实现

/*** @Description: 棋子翻转* @Author: ai* @create: 2021-11-30 10:31*/
public class ChessFilp {/*** https://blog.csdn.net/sinat_37341950/article/details/78495282** @param args*/public static void main(String[] args) {int[][] A = {{0, 0, 1, 1}, {1, 0, 1, 0}, {0, 1, 1, 0}, {0, 0, 1, 0}};int[][] f = {{2, 2}, {3, 3}, {4, 4}};int[][] result = chessFilp(A, f);for (int i = 0; i < result.length; i++) {System.out.println(Arrays.toString(result[i]));}}/*** 思路是分四种情况。分别计算有上棋子的情况、有下棋子、有左棋子、有右棋子的情况。** @param A* @param f* @return*/public static int[][] chessFilp(int[][] A, int[][] f) {// write code herefor (int i = 0; i < f.length; i++)// 以翻转位置为中心{int x = f[i][0] - 1;int y = f[i][1] - 1;if (x > 0)A[x - 1][y] ^= 1;if (x < A.length - 1)A[x + 1][y] ^= 1;if (y > 0)A[x][y - 1] ^= 1;if (y < A[0].length - 1)A[x][y + 1] ^= 1;}return A;}
}

Gitee地址,欢迎关注,不定期更新内容,点亮技能树。

牛客 算法编程题 模块地址

棋子翻转 全部代码地址

[编程题] 棋子翻转-Java相关推荐

  1. java里冒泡排序编程案例_java编程题:用Java实现一个冒泡排序算法

    /** * java编程题:用Java实现一个冒泡排序算法 */ public class Test12 { public static void main(String[] args) { int[ ...

  2. 督促自己——某客网编程题三道(Java)——字符串、集合、数组

    某客网编程题三道(Java)--字符串.集合.数组 第一题: 题目描述 找出字符串中第一个只出现一次的字符 输入描述: 输入几个非空字符串 输出描述: 输出第一个只出现一次的字符,如果不存在输出-1 ...

  3. 编程题2使用Java的继承关系来描述动物世界的特征和关系。

    编程题2使用Java的继承关系来描述动物世界的特征和关系. ( 1 )抽象出项目问题中的对象:动物.老鼠.熊猫. (2 )抽象出每种对象所具有的性质:名字和食物. ( 3)抽象出每种对象所具有的行为, ...

  4. java 编程题_最新JAVA编程题全集(50题及答案)92862

    <最新JAVA编程题全集(50题及答案)92862>由会员分享,可在线阅读,更多相关<最新JAVA编程题全集(50题及答案)92862(32页珍藏版)>请在人人文库网上搜索. ...

  5. 魔法币 java_网易2018校招笔试编程题-魔法币 java实现

    魔法币 原题 小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币. 魔法机器1:如果投 ...

  6. 2018腾讯实习招聘笔试编程题之翻转数列

    题目描述:小Q定义了一种数列称为翻转数列                  给定整数n和m,满足n能被2m整除.对于一串连续递增整数数列1,2,3,4...,每隔m个符号翻转一次,最初符号为'-'   ...

  7. 【vivo2021届秋季校招编程题】【java】广度优先搜索(BFS)/深度优先搜索(DFS)找最短路径长度

    vivo2021届秋季校招编程题 图中 找两点间的最短路径长度 广度搜索bfs/深度搜索dfs vivo游戏中心的运营小伙伴最近接到一款新游戏的上架申请,为了保障用户体验,运营同学将按运营流程和规范对 ...

  8. 大学期末考java编程题_大学java期末考试考试题和答案

    题号 一 二 三 总分 得分 得分 评卷人 一.简单编程题 < 共 50 分) 在考试文件夹中新建一个应用程序 proj1< 应用程序的文件夹名称为 proj1 ),按照以下要求编写程序代 ...

  9. 京东校招java面试题_京东2018校招编程题解答(Java)

    写在前面 本文主要是解答这次校招中京东的笔试编程题,这次京东的笔试编程题比较难,涉及KMP算法.manacher算法等.文中的解法也是在观看了左神(左程云)9月20号在牛客网的直播后,自己花时间写出来 ...

最新文章

  1. 2012最炙手可热的10项IT技术——相对应的技术书
  2. linux命令see的用法,Linux一些基本命令与用法
  3. Mybatis Plus——AutoGenerator配置BaseResultMap(通用查询映射结果)和BaseColumnList(通用查询结果列)自动生成
  4. echarts 柱状图 ,颜色和显示设置
  5. LeetCode 2200. 找出数组中的所有 K 近邻下标
  6. mysql limit to hosts matching_MySQL 用户访问限制 -- Host Match Limit
  7. JavaScript数据结构和算法简述——前言
  8. qt在GUI显示时,将调试信息输出到控制台的设置
  9. 最常用的网络应用工具之寻线仪
  10. Tensor flow 实战Google深度学习框架 笔记摘要Pfour
  11. Mac安装Consolas字体最简单的方法
  12. 用花生壳搭建个人简易静态网站
  13. HDFS的设计目标是什么?
  14. springboot的学习(1)
  15. 鸡啄米:C++编程入门系列之目录和总结
  16. MobileNet_v1:深度可分离卷积
  17. 递归走楼梯or斐波那契数列
  18. Android开发环境搭建+AS常用功能指导
  19. 高性能计算基准测试程序(二)--MPI测试基准
  20. 使用CRF++实现命名实体识别

热门文章

  1. 操作系统-先进先出和最近最久未使用算法-C语言
  2. W5500 使用总结
  3. 语音去混响之MCLP算法
  4. Sweet Home 3D for Mac(3D室内装潢设计软件)
  5. Ajax学习:nodejs安装+express框架介绍
  6. 我的GH60 - 极客定制GK61XS : eclipse软件开发常用快捷键新增绑定 (亦适用于不使用方向键/HOME/END情况的大牛)
  7. 初学者需要了解Linux这么多
  8. 【浅尝辄止】《汇编语言》入栈出栈操作
  9. android开发用百度识别图片格式,Android开发学习之路-机器学习库(图像识别)、百度翻译...
  10. 云模型量子粒子群算法