P1259 黑白棋子的移动【java】【AC代码】
有 2n 个棋子排成一行,开始为位置白子全部在左边,黑子全部在右边,如下图为 n=5 的情况:

移动棋子的规则是:每次必须同时移动相邻的两个棋子,颜色不限,可以左移也可以右移到空位上去,但不能调换两个棋子的左右位置。每次移动必须跳过若干个棋子(不能平移),要求最后能移成黑白相间的一行棋子。如 n=5 时,成为:

任务:编程打印出移动过程。
输入格式
一个整数 n。
输出格式
若干行,表示初始状态和每次移动的状态,用 o 表示白子,* 表示黑子,- 表示空行。
思路:
我是肺雾,只能找规律打表了,从第一行到倒数第五行的移动方式很简单。都是将字符不断往前移动使两个不同颜色的棋相邻,再将两两移动到末尾。由于java没有指针这个东西,所以只能通过数组的下标来完成两个数的交换。
后四行的的数据实在是看不出来有什么规律,只能通过打表的方式来完成了,可以看到每行只有前9个字符在发生变化,所以我们将最后四行前9个字符存起来,然后输出剩余字符即可。
代码:
import java.util.Scanner;
public class Main {static Scanner sc = new Scanner(System.in);static char[] ch = new char[205];static String[] s = new String[]{"ooo*o**--","o--*o**oo","o*o*o*--o","--o*o*o*o"};public static void main(String[] args) {int n = sc.nextInt(),len = n;ch[2*n+1] = '-';ch[2*n+2] = '-';for (int i = 1; i <= n; i++) {ch[i] = 'o';ch[i+n] = '*';}for (int i = 1; i <= 2 *n + 2; i++)System.out.print(ch[i]);System.out.println();while(len > 3) { //棋子的个数swap(ch, len, 2 * len + 1);//移动前状态swap(ch, len+1, 2 * len + 2);for (int i = 1; i <= 2 *n + 2; i++)System.out.print(ch[i]);System.out.println();swap(ch,len, 2 * len);//移动后状态swap(ch,len+1, 2 * len-1);if(len-1 == 3) {len--;break;}for (int i = 1; i <= 2 *n + 2; i++)System.out.print(ch[i]);System.out.println();len--;}for (int i = 0; i < s.length; i++) {System.out.print(s[i]);for (int j = 2*len + 4; j <= 2 * n + 2; j++)System.out.print(ch[j]);System.out.println();}}static void swap(char[] num,int a,int b) {char temp = num[a];num[a] = num[b];num[b] = temp;}
}
相关文章:
P1259 黑白棋子的移动【java】【AC代码】
有 2n 个棋子排成一行,开始为位置白子全部在左边,黑子全部在右边,如下图为 n5 的情况: 移动棋子的规则是:每次必须同时移动相邻的两个棋子,颜色不限,可以左移也可以右移到空位上去,但…...
【极光 Orbit·STC8AH】04. 深度探索 GPIO 底层逻辑
【极光 OrbitSTC8A&H】04. 深度探索 GPIO 底层逻辑 引言:当代码遇见硬件 上周我看着学生调试的工控产品,他们困惑地盯着自己编写的代码:“老师,这段C语言明明在PC上跑得没问题啊!” ,让我想起自己初学…...
67.Harmonyos NEXT 图片预览组件之性能优化策略
温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦! Harmonyos NEXT 图片预览组件之性能优化策略 文章目录 Harmonyos NEXT 图片预览组件之性能优化策略效果预览一、性能优化概述1. 性能优化的关键指标…...
uni-app+SpringBoot: 前端传参,后端如何接收参数
做项目中的一些小经验,方便后续 (1)前端代码中,请求的 URL 是通过查询参数(?id${articleId})传递的 后端接口: GetMapping("/knowledgeDetail") public Result getKnowledgeByid(R…...
【Vue.js】
一、简介 1、概述 官网GitHub - Vuejs Vue 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。 Vue.js作为一个渐进式框架,其设计理…...
正则表达式入门及常用的正则表达式
正则表达式(Regular Expression,简称 Regex)是一种强大的文本处理工具,用于匹配、查找和替换字符串中的特定模式。以下是入门指南和常用正则表达式示例: 一、正则表达式入门 1. 基本语法 符号说明示例.匹配任意单个字…...
Windows下安装Git客户端
① 官网地址:https://git-scm.com/。 ② Git的优势 大部分操作在本地完成,不需要联网;完整性保证;尽可能添加数据而不是删除或修改数据;分支操作非常快捷流畅;与Linux 命令全面兼容。 ③ Git的安装 从官网…...
SAP IBP for Supply Chain Certification Guide (Parag Bakde, Rishabh Gupta)
SAP IBP for Supply Chain Certification Guide (Parag Bakde, Rishabh Gupta)...
【计算机网络通信 AMQP】使用 Qt 调用 qamqp 库进行 AMQP 通信
以下是一个使用 Qt 实现 AMQP 通信的代码示例。为了实现这个功能,我们可以使用 qamqp 库,它是一个基于 Qt 的 AMQP 客户端库。首先,你需要将 qamqp 库添加到你的 Qt 项目中,可以通过 qmake 或 CMake 进行配置。 #include <QCo…...
C语言中的指针与数组:概念、关系与应用
指针和数组都是C语言中极其重要的概念,本文将分步骤深入分析指针和数组在C语言中的概念、它们之间的关系以及它们在实际编程中的应用。 一、指针与数组的基本概念详解 1.1 指针详解 指针是一个变量,它存储的是另一个变量的内存地址。理解指针的核心就是“内存地址”,指针…...
如何处理PHP中的日期和时间问题
如何处理PHP中的日期和时间问题 在PHP开发中,日期和时间的处理是一个常见且重要的任务。无论是记录用户操作时间、生成时间戳,还是进行日期计算,PHP提供了丰富的函数和类来帮助开发者高效处理这些需求。本文将详细介绍如何在PHP中处理日期和…...
TDengine 使用最佳实践
简介 阅读本文档需要具备的基础知识: Linux系统的基础知识,及基本命令网络基础知识:TCP/UDP、http、RESTful、域名解析、FQDN/hostname、hosts、防火墙、四层/七层负载均衡 本文档的阅读对象有:架构师、研发工程师,…...
Spring、Spring Boot、Spring Cloud 的区别与联系
1. Spring 框架 定位:轻量级的企业级应用开发框架,核心是 IoC(控制反转) 和 AOP(面向切面编程)。 核心功能: 依赖注入(DI):通过 Autowired、Component 等注解…...
AutoGen-构建问答智能体
概述 如https://github.com/microsoft/autogen所述,autogen是一多智能体的框架,属于微软旗下的产品。 依靠AutoGen我们可以快速构建出一个多智能体应用,以满足我们各种业务场景。 环境说明 python,3.10AutoGen,0.4.2…...
C语言实现括号匹配检查及栈的应用详解
目录 栈数据结构简介 C语言实现栈 栈的初始化 栈的销毁 栈的插入 栈的删除 栈的判空 获取栈顶数据 利用栈实现括号匹配检查 总结 在编程中,经常会遇到需要检查括号是否匹配的问题,比如在编译器中检查代码的语法正确性,或者在…...
C语言中的字符串与数组的关系
在C语言中,字符串和数组之间有着紧密的关系。理解它们的区别和联系对于编写高效且可靠的代码至关重要。在本篇博文中,我们将详细分析字符串和数组在C语言中的概念、它们的关系以及如何在编程中应用它们。 一、字符串与数组的基础知识 1.1 数组概念 在C语言中,数组是一组相…...
阿里云魔笔低代码应用开发平台快速搭建教程
AI低代码,大模型时代应用开发新范式 什么是魔笔 介绍什么是魔笔低代码应用开发平台。 魔笔是一款面向全端(Web、H5、全平台小程序、App)场景的模型驱动低代码开发平台,提供一站式的应用全生命周期管理,包括可视化开发…...
A Survey on Mixture of Experts 混合专家模型综述(第二部分:混合专家系统设计)
A Survey on Mixture of Experts 混合专家模型综述 (第一部分:混合专家算法设计) A Survey on Mixture of Experts arxiv github:A-Survey-on-Mixture-of-Experts-in-LLMs 5 System Design of Mixture of Experts While Mixture of Exper…...
docker python:latest镜像 允许ssh远程
跳转到家目录 cd创建pythonsshdockerfile mkdir pythonsshdockerfile跳转pythonsshdockerfile cd pythonsshdockerfile创建Dockerfile文件 vim Dockerfile将Dockerfile的指令复制到文件中 # 使用 python:latest 作为基础镜像 # 如果我的镜像列表中没有python:latest镜像&…...
通过 CSS 的 命名页面(Named Pages) 技术实现作用域隔离,实现 @page 样式仅影响当前组件
以下是实现 page 样式仅影响当前组件的完整解决方案,通过 CSS 的 命名页面(Named Pages) 技术实现作用域隔离: vue <template><div><button v-print"printOptions">打印当前报表</button><…...
Aim Robotics电动胶枪:机器人涂胶点胶的高效解决方案
在自动化和智能制造领域,机器人技术的应用越来越广泛,而涂胶和点胶作为生产过程中的重要环节,也逐渐实现了自动化和智能化。Aim Robotics作为一家专注于机器人技术的公司,其推出的电动胶枪为这一领域带来了高效、灵活且易于操作的…...
动态规划----完全平方数(3种写法,逐步简化)
题目链接:完全平方数 完全平方数可以认为是完全背包问题。每一个平方小于n的平方数都是物品,而完全平方数之和n就是背包容量。每一个平方和都可以无限次使用。 写法1:把所有小于n的平方数存入数组nums,使用二维dp数组。 递推公式的推导可以…...
C#中通过Response.Headers设置自定义参数
一、基础设置方法 1. 直接添加自定义头 // ASP.NET Core方案 Response.Headers.Append("X-API-Version", "2.3.1"); Response.Headers.Append("Custom-Auth-Token", Guid.NewGuid().ToString());• 底层原理:通过IHeaderDictionary…...
【HDLbits--分支预测器简单实现】
HDLbits--分支预测器简单实现 1 timer2.branche predicitors3.Branch history shift4.Branch direction predictor 以下是分支预测器的简单其实现; 1 timer 实现一个计时器,当load1’b1时,加载data进去,当load1’b0时进行倒计时&…...
LLM自动化评测
使用的数据集:ceval-exam import requests from datasets import load_dataset, concatenate_datasets import re from tqdm import tqdm import re, time, tiktoken, ollama from ollama import ChatResponse from ollama import Optionsdef llm(model, query, te…...
Linux--操作系统/进程
ok,我们今天学习linux中的操作系统和进程 1. 冯诺依曼体系 我们常⻅的计算机,如笔记本。我们不常⻅的计算机,如服务器,⼤部分都遵守冯诺依曼体系。 内存是CPU和外设之间的一个巨大的缓存! 截⾄⽬前,我们…...
MFC控件按钮的使用
MFC窗口的创建/消息映射机制 mfc.h #include<afxwin.h>//mfc头文件//应用程序类 class MyApp:public CWinApp //继承于应用程序类 { public://程序入口virtual BOOL InitInstance(); };//框架类 class MyFrame:public CFrameWnd { public:MyFrame();//声明宏 提供消息映…...
Java面试八股—Redis篇
一、Redis的使用场景 (一)缓存 1.Redis使用场景缓存 场景:缓存热点数据(如用户信息、商品详情),减少数据库访问压力,提升响应速度。 2.缓存穿透 正常的访问是:根据ID查询文章&…...
计算矩阵边缘元素之和(信息学奥赛一本通-1121)
【题目描述】 输入一个整数矩阵,计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。 【输入】 第一行分别为矩阵的行数m和列数n(m<100,n<100),…...
Web后端开发之Maven
Maven Mven是apache旗下的一个开源项目,用来管理和构建java项目的工具。 通过一小段描述信息来管理项目。 Maven的作用 1.依赖管理:方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题 以前用某个jar包需要下载…...
