金币阵列

2024-06-21 05:08
文章标签 金币 阵列

本文主要是介绍金币阵列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题描述:有m*n枚金币在桌面上排列成一个m行n列的金币阵列。每一枚金币或正面朝上,或背面朝上。用数字表示金币状态,0表示正面朝上,1表示背面朝上。

金币阵列游戏的规则是:

    (1)每次将任一行金币翻过来放在原来的位置上。

    (2)每次可以任选2列,交换这2列金币的位置。

    任务:给定金币的初始状态和目标状态,编程计算按金币游戏规则,将金币排列从初始状态变换到目标状态所需的最少变换次数。

    解题思路:

    本例的实质是将一个二进制矩阵从一种形式利用相应规则变换到另一种形式。提供的规则有两种:

    (1)将某一行的金币翻转;

    (2)将某两列进行交换。

    在这两种操作中,第一种操作可能会影响到某一行或者某一列中已经排列好的相关元素,因此,首先利用该规则进行变换,而后续的操作则不再利用该规则。算法的具体思路如下:

    (1)将矩阵中的每一列作为第1列,并利用第一个规则将第1列中的相关元素与目标矩阵中第1列的元素进行配对,如果不相同,则利用每1个规则进行翻转;

    (2)从第2列开始,将处理后的列与目标列进行比较,如果相同,则转下一列;如果不相同,看是否可以通过列的交换完成,如果不可以,则无法做到,如果可以,则继续扫描,直至所有的列描述完成为止。





import java.util.Scanner;
public class Q1_4 {static int[][] primary, goal, tempPri,tempGoal;static int count=0;public static void main(String[] args) {@SuppressWarnings("resource")Scanner input =new Scanner(System.in);System.out.println("分别输入行列:");int n,m;n=Integer.valueOf(input.nextLine());  //行m=Integer.valueOf(input.nextLine());  //列primary=new int[n][m];goal=new int[n][m];tempPri=new int[n][m];tempGoal=new int[n][m];for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {goal[i][j]=input.nextInt();}}for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {primary[i][j]=input.nextInt();}}for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {tempPri[i][j]=primary[i][j];tempGoal[i][j]=goal[i][j];}}for (int j = 0; j < m-1; j++) {for (int i = 0; i < n; i++) {if(tempPri[i][j]!=tempGoal[i][j]){//count++;fan(i);}}int t=0;for (int i = 1; i < m; i++) {t=comp(i);if(t==0){break;}}if(t==1){break;}for (int i = 0; i < n; i++) {for (int k = 0; k < m; k++) {tempPri[i][k]=primary[i][k];tempGoal[i][k]=goal[i][k];}}			count=0;ch(j,j+1);}if(count==0){System.out.println("不可能实现");}else{System.out.println(count);}}public static int comp(int i){                          //列比较boolean tf=true;for (int j = i; j < tempGoal[0].length; j++) {for (int k = 0; k < tempGoal.length; k++) {if(tempPri[k][j]!=tempGoal[k][i]){tf=false;break;}}if(tf==true){if(i==j){return 1;}else{//count++;ch(i,j);return 1;}}tf=true;}return 0;}public static void ch(int i,int j){                 //i列与j列交换count++;for (int k = 0; k < tempPri.length; k++) {tempPri[k][i]=tempPri[k][j]-tempPri[k][i];tempPri[k][j]=tempPri[k][j]-tempPri[k][i];tempPri[k][i]=tempPri[k][j]+tempPri[k][i];}}public static void fan(int i){       //翻转第i行count++;for (int j = 0; j < tempPri[i].length; j++) {tempPri[i][j]=1-tempPri[i][j];}}
}


这篇关于金币阵列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1080289

相关文章

安卓金币字符串转换成三位一个逗号的格式

DecimalFormat df1 = new DecimalFormat("###,###,###,##0.##");         return df1.format(Double.parseDouble(“ 17352208.25 ”)); 输出   17,352,208,25

SOC 阵列:创新算力的未来之路

一、SOC阵列的概念与发展历程 SOC 阵列是由多个特定功能集成电路组合在一个芯片上的系统或产品,包含硬件系统及嵌入式软件。从传统集成电路到 SOC 经历多个阶段,初期电路由分立元件组成,后集成到单芯片集成电路中,其发展遵循摩尔定律,从 SSI 到 MSI、LSI 再到代表 VLSI 的 SOC 阵列。SOC 阵列在电子系统中地位凸显,实现小型化、提高效率、降低功耗和整体性能,如在便携设备中使设

实现用python刷王者荣耀金币

刷冒险最后一关,需要满符文 需要安装adb,可以网上查阅怎么安装 将adb路径加入环境变量 # -*- coding: utf-8 -*-"""Created on Wed Feb 20 13:48:11 2019微信区:东皇,鲁班,扁鹊QQ区:赵云,鲁班,扁鹊@author: 邓磊"""from subprocess import runimport timepath="D:\

服务器数据恢复—如何应对双循环RAID5阵列的数据丢失问题?

服务器存储数据恢复环境: 一台存储中有一组由7块硬盘组建的RAID5阵列,存储中还有另外3块盘是raid中掉线的硬盘(硬盘掉线了,管理员只是添加一块的新的硬盘做rebuild,并没有将掉线的硬盘拔掉)。整个RAID5阵列的存储空间划分了一个LUN。 服务器存储故障: 硬盘出现故障导致存储中阵列瘫痪。 和管理员沟通,据管理员说是磁盘阵列中某些硬盘出现故障导致存储不可用,初步判断RAID中有硬盘

1.5编程基础之循环控制45:金币

国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天)里,每天收到两枚金币;之后三天(第四、五、六天)里,每天收到三枚金币;之后四天(第七、八、九、十天)里,每天收到四枚金币……这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币(N为任意正整数)。 你需要编写一个程序,确定从第一天开始的给定天数

MATLAB进行天线阵列方向图综合

摘要:本次推文将介绍如何利用MATLAB的Sensor Array Analyzer进行天线阵列的方向图综合。 1. 阵列方向图综合理论 对于均匀平面阵列而言,其阵因子公式可以写成 当阵列是三角网格布置或者圆环阵时,《ANTENNA THEORY ANALYSIS AND DESIGN》等相关教程也是有公式可参考的。不过对于任意孔径下排布,我们就需要回归到最通用的方向图综合公式。即通过已

服务器数据恢复—LeftHand存储中raid5阵列多块磁盘离线的数据恢复案例

LeftHand存储支持RAID5、RAID6、RAID10磁盘阵列,同时还支持卷快照,卷动态扩容等。下面简单聊一下LeftHand存储的结构和一个LeftHand p4500存储中磁盘阵列数据恢复案例。 服务端: 客户端: LeftHand存储结构: Lefthand存储有物理磁盘、逻辑磁盘、逻辑卷三个级别,多个物理磁盘组成一个逻辑磁盘,也就是RAID磁盘阵列。在RAID之上,将不同RAID组

阵列信号处理2_阵列信号最优处理常用准则(CSDN_20240825)

目录 最小均方误差(Minimum Square Error,MSE)准则 最大信噪比(Maximum Signal Noise Ratio,MSNR)准则 极大似然(Maximum Likehood, ML)准则 最小方差无损响应(Minimum Variance Distortionless Response, MVDR)准则 四种准则之间的关系

Dell 服务器 PowerEdge T440 通过BIOS配置RAID阵列

目录 1.清除当前RAID磁盘阵列配置 1.1开机按F2进入System Setup管理界面; 1.2点击Device Settings; 1.3选择RAID controller in Slot 4:DELL PERC Configuration Utility;卡型号> 1.4选择Configuration Management; 1.5选择View Disk Group Prop

DHU 二维数组 阵列

输出范例给的不工整 思路及代码  写的不优雅 分为三部分 枚举输出 n = 1-11 规律求出 n >= 12 的矩阵 输出需要的矩阵,把每一行存成一个字符串,方便左右对齐 #include<iostream>#include<cmath>#include<iomanip>#include<string>using namespace std;int main