import java.io.*;
public class Solution{
public static void main(String[] args){
/*int[] a=new int[11];
int[] back=new int[11];
int[] m=new int[11];
int[] negm=new int[11];
int[] q=new int[11];*/
int[] a={1,1,1,1,1,1,1,1,1,1,1,1};
int[] back={1,1,1,1,1,1,1,1,1,1,1,1};
int[] m={0,0,0,0,0,0,0,0,1,1,0,1};
int[] negm={1,1,1,1,1,1,1,1,0,0,1,1};
int[] q={1,1,1,1,0,1,1,0,1,1,1,1};
String flag=new String("+");
boolean suc=true;
printArray(a);
System.out.print("\t");
printArray(q);
System.out.print("\t");
System.out.println("Initial");
for(int n=0;n<12;n++){
shift(a);
a[a.length-1]=q[0];
shift(q);
back=copy(a);
printArray(a);
System.out.print("\t");
printArray(q);
System.out.print("\t");
System.out.println("Shift");
if(a[0]==m[0]){
a=add(a,negm);
printArray(a);
System.out.print("\t\t\t");
System.out.println("-");
}
else{
a=add(a,m);
printArray(a);
System.out.print("\t\t\t");
System.out.println("+");
}
if(a[0]==back[0]) suc=true;
else suc=false;
if(suc||zero(a)) set(q,1);
if(!suc&&!zero(a)){
set(q,0);
a=copy(back);
printArray(a);
System.out.print("\t");
printArray(q);
System.out.print("\t");
System.out.println("Backup");
}
}
}
public static int[] add(int[] a,int[] b){
int c=0;
int index;
int[] result=new int[12];
for(index=a.length-1;index>-1;index--){
result[index]=(a[index]+b[index]+c)%2;
c=(a[index]+b[index]+c)/2;
//System.out.println(c);
}
return result;
}
public static void shift(int[] a){
int index;
for(index=0;index<a.length-1;index++){
a[index]=a[index+1];
}
a[index]=0;
}
public static void set(int[] q,int value){
if(q[q.length-1]!=value){
q[q.length-1]=value;
System.out.print("\t\t");
printArray(q);
System.out.print("\t");
System.out.println("Set "+value);
}
}
public static int[] copy(int[] source){
int[] aim=new int[source.length];
for(int index=0;index<source.length;index++)
aim[index]=source[index];
return aim;
}
public static boolean zero(int[] a){
boolean f=true;
for(int i=0;i<a.length;i++){
if(a[i]!=0) f=false;
}
return f;
}
public static void printArray(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]);
if((i+1)%4==0&&(i+1)!=arr.length)
System.out.print(',');
}
}
}
附答案:
1111,1111,1111 1111,0110,1111 Initial
1111,1111,1111 1110,1101,1110 Shift
0000,0000,1100 +
1111,1111,1111 1110,1101,1110 Backup
1111,1111,1111 1101,1011,1100 Shift
0000,0000,1100 +
1111,1111,1111 1101,1011,1100 Backup
1111,1111,1111 1011,0111,1000 Shift
0000,0000,1100 +
1111,1111,1111 1011,0111,1000 Backup
1111,1111,1111 0110,1111,0000 Shift
0000,0000,1100 +
1111,1111,1111 0110,1111,0000 Backup
1111,1111,1110 1101,1110,0000 Shift
0000,0000,1011 +
1111,1111,1110 1101,1110,0000 Backup
1111,1111,1101 1011,1100,0000 Shift
0000,0000,1010 +
1111,1111,1101 1011,1100,0000 Backup
1111,1111,1011 0111,1000,0000 Shift
0000,0000,1000 +
1111,1111,1011 0111,1000,0000 Backup
1111,1111,0110 1111,0000,0000 Shift
0000,0000,0011 +
1111,1111,0110 1111,0000,0000 Backup
1111,1110,1101 1110,0000,0000 Shift
1111,1111,1010 +
1110,0000,0001 Set 1
1111,1111,0101 1100,0000,0010 Shift
0000,0000,0010 +
1111,1111,0101 1100,0000,0010 Backup
1111,1110,1011 1000,0000,0100 Shift
1111,1111,1000 +
1000,0000,0101 Set 1
1111,1111,0001 0000,0000,1010 Shift
1111,1111,1110 +
0000,0000,1011 Set 1
分享到:
相关推荐
《Java语言程序设计与数据结构(基础篇)》原书第11版是学习Java编程和数据结构的经典教材。本书深入浅出地介绍了如何利用Java这一强大开发语言来理解和实现各种数据结构,对于初学者和有经验的程序员来说都是宝贵的...
第二题涉及素数的识别与计数,具体目标是在101至200之间找出并统计所有素数。素数是指只能被1和自身整除的自然数。为了高效地确定一个数是否为素数,程序采用了试除法,即用该数去除以从2到其平方根的所有数,若能被...
本文将详细解析几个典型的JAVA编程递归题目,包括阶乘计算、摘桃子问题、斐波那契数列以及汉诺塔问题,通过实例代码分析递归的应用与实现。 #### 1. 阶乘计算 阶乘是数学中的一个基本概念,表示为`n!`,其定义为...
《剑指offer 名企面试官精讲典型编程题》书中第二章到第八章java代码实现,分章节package;实现代码包括原题目,以及其中的一些“本题扩展”;更具有详细的代码注释,很多代码从基础的暴力解法到书中的技巧解法均有...
第一层有1个,第二层有3个,第三层有6个,以此类推,这是一个等差数列,首项为1,公差为2(因为每层比上一层多2个)。第n层的元素个数可以通过公式求得:`n + (n-1) * 2`,即`n*(n+1)`。要得到前100层的总和,我们...
这个压缩包文件包含的是LeetCode上2000道编程题目的C++和Java解法,覆盖了从第1题到第2000题的广泛范围。这些题目涵盖了数据结构、算法、设计模式等多个IT领域的核心知识点,是提升编程技术的宝贵资源。 首先,让...
Java语言程序设计是计算机科学领域中的重要课程,尤其对于自学考试(自考)的学生来说,掌握好Java编程技能至关重要。本资源"自考 JAVA语言程序设计(一) 课后习题代码"提供了针对该课程的课后练习题的代码解答,旨在...
第二道题目(02题)与第一题类似,也是寻找两数之和,但增加了对特殊情况的处理,如无解时抛出异常。解题思路与解法二相同,先创建一个哈希表,然后遍历数组,利用哈希表查找目标值减去当前元素值的键是否存在,并...
第二部分的暗黑版《LeetCode 刷题笔记 with Java 1-50(暗黑版).pdf》可能提供了更加深入或非主流的解法,鼓励读者从不同角度思考问题,挑战自己的思维极限。 接着是《LeetCode 刷题笔记 with Java 51-100.pdf》,...
8. **2**: 第2个题目可能是对基础算法的考察,比如排序(快速排序、归并排序等)和搜索(二分搜索、广度优先搜索等)。 9. **3**: 第3个题目可能是一个涉及复杂逻辑推理的问题,可能需要选手编写程序来解决逻辑谜题...
在 Java 中,实现计算圆锥体的表面积和体积是常见的编程题目,本文将详细介绍如何使用 Java 实现计算圆锥体的表面积和体积。 一、Java 中的接口和实现 在 Java 中,接口是一个抽象的概念,用于定义一组方法的集合...
这个压缩包包含了从2013年12月到2019年3月期间的所有真题的第一二题的Java实现源代码,以及对应的题目内容和代码截图。这个资料对于准备参加CCF竞赛或者提升编程技能的学员来说,具有很高的参考价值。 首先,我们要...
第2至12题可能逐渐增加难度,涵盖数组、字符串操作、函数的使用等。第15题可能涉及到类的使用,例如创建一个自定义类并实现其功能。而第18题可能是一个关于异常处理或者多线程的问题,这需要对Java的try-catch语句或...
《剑指offer第二版完整java版》是为解决编程面试中算法和数据结构问题而提供的Java语言编程参考书。这本书针对腾讯、阿里巴巴、百度等一线互联网公司的面试要求,整理了大量的面试题及答案,涵盖了数组、字符串、...
《数据结构上机指导(第3版)李春葆》是一本针对计算机科学与技术专业学生的重要教材,主要讲解如何将理论数据结构知识应用于实际编程中。这本书的第三版不仅包含了丰富的理论内容,还提供了配套的上机练习及源代码...
本题解针对LeetCode面试中的第二题——"两数相加",提供了详细的Java解决方案。 题目描述: 给定两个非空链表表示两个非负整数。它们的数字是以逆序方式存储的,即最高位位于链表的最前面。编写一个函数将这两个数...
在Java编程领域,经典的实验例题常常用于帮助学习者深入理解和掌握...通过实践这些题目,学习者能够更好地理解数据结构与算法,并提升问题解决能力。在实际编程工作中,这些技能对于开发高效、可维护的软件至关重要。
Java程序设计基础篇是学习Java编程的入门教材,其第六章通常涵盖了面向对象编程的核心概念。在这个章节中,学生会接触到类、对象、继承、封装和多态等关键概念。编程题是理解和掌握这些概念的重要实践环节。由于本书...
本压缩包"基于java语言的数据结构及算法实现,LeetCode算法示例.zip"可能包含了一系列使用Java实现的LeetCode算法解题代码,特别是与文件名"java0323"相关的代码示例。 1. **数据结构** - **数组**:基础的数据结构...