`
bbiao
  • 浏览: 72324 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

计算机组织与结构第二道题目的JAVA解法

阅读更多

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语言程序设计与数据结构(基础篇)》原书第11版是学习Java编程和数据结构的经典教材。本书深入浅出地介绍了如何利用Java这一强大开发语言来理解和实现各种数据结构,对于初学者和有经验的程序员来说都是宝贵的...

    Java能力编程50道经典题目答案+分析

    第二题涉及素数的识别与计数,具体目标是在101至200之间找出并统计所有素数。素数是指只能被1和自身整除的自然数。为了高效地确定一个数是否为素数,程序采用了试除法,即用该数去除以从2到其平方根的所有数,若能被...

    JAVA编程(递归典型题目)

    本文将详细解析几个典型的JAVA编程递归题目,包括阶乘计算、摘桃子问题、斐波那契数列以及汉诺塔问题,通过实例代码分析递归的应用与实现。 #### 1. 阶乘计算 阶乘是数学中的一个基本概念,表示为`n!`,其定义为...

    剑指offer第二到八章代码java实现

    《剑指offer 名企面试官精讲典型编程题》书中第二章到第八章java代码实现,分章节package;实现代码包括原题目,以及其中的一些“本题扩展”;更具有详细的代码注释,很多代码从基础的暴力解法到书中的技巧解法均有...

    第七届蓝桥杯Java 大学B组(省赛试题)答案

    第一层有1个,第二层有3个,第三层有6个,以此类推,这是一个等差数列,首项为1,公差为2(因为每层比上一层多2个)。第n层的元素个数可以通过公式求得:`n + (n-1) * 2`,即`n*(n+1)`。要得到前100层的总和,我们...

    力扣-LeetCode全套2000题目解答C++和Java版.rar

    这个压缩包文件包含的是LeetCode上2000道编程题目的C++和Java解法,覆盖了从第1题到第2000题的广泛范围。这些题目涵盖了数据结构、算法、设计模式等多个IT领域的核心知识点,是提升编程技术的宝贵资源。 首先,让...

    自考 JAVA语言程序设计(一) 课后习题代码

    Java语言程序设计是计算机科学领域中的重要课程,尤其对于自学考试(自考)的学生来说,掌握好Java编程技能至关重要。本资源"自考 JAVA语言程序设计(一) 课后习题代码"提供了针对该课程的课后练习题的代码解答,旨在...

    LeetCode 刷题笔记 with Java 1-50.pdf

    第二道题目(02题)与第一题类似,也是寻找两数之和,但增加了对特殊情况的处理,如无解时抛出异常。解题思路与解法二相同,先创建一个哈希表,然后遍历数组,利用哈希表查找目标值减去当前元素值的键是否存在,并...

    LeetCode 刷题笔记 with Java.zip

    第二部分的暗黑版《LeetCode 刷题笔记 with Java 1-50(暗黑版).pdf》可能提供了更加深入或非主流的解法,鼓励读者从不同角度思考问题,挑战自己的思维极限。 接着是《LeetCode 刷题笔记 with Java 51-100.pdf》,...

    ACM自己做的一些题目

    8. **2**: 第2个题目可能是对基础算法的考察,比如排序(快速排序、归并排序等)和搜索(二分搜索、广度优先搜索等)。 9. **3**: 第3个题目可能是一个涉及复杂逻辑推理的问题,可能需要选手编写程序来解决逻辑谜题...

    java实现计算圆锥体的表面积和体积(实验文档)

    在 Java 中,实现计算圆锥体的表面积和体积是常见的编程题目,本文将详细介绍如何使用 Java 实现计算圆锥体的表面积和体积。 一、Java 中的接口和实现 在 Java 中,接口是一个抽象的概念,用于定义一组方法的集合...

    CCF历年真题题目+源代码word版(可直接打印).zip

    这个压缩包包含了从2013年12月到2019年3月期间的所有真题的第一二题的Java实现源代码,以及对应的题目内容和代码截图。这个资料对于准备参加CCF竞赛或者提升编程技能的学员来说,具有很高的参考价值。 首先,我们要...

    《Java语言程序设计》(基础篇)第14章编程练习题第1到12题答案

    第2至12题可能逐渐增加难度,涵盖数组、字符串操作、函数的使用等。第15题可能涉及到类的使用,例如创建一个自定义类并实现其功能。而第18题可能是一个关于异常处理或者多线程的问题,这需要对Java的try-catch语句或...

    剑指offer第二版完整java版

    《剑指offer第二版完整java版》是为解决编程面试中算法和数据结构问题而提供的Java语言编程参考书。这本书针对腾讯、阿里巴巴、百度等一线互联网公司的面试要求,整理了大量的面试题及答案,涵盖了数组、字符串、...

    数据结构上机指导(第3版)李春葆

    《数据结构上机指导(第3版)李春葆》是一本针对计算机科学与技术专业学生的重要教材,主要讲解如何将理论数据结构知识应用于实际编程中。这本书的第三版不仅包含了丰富的理论内容,还提供了配套的上机练习及源代码...

    java面试-leetcode面试java编程题解之第2题两数相加-java题解.zip

    本题解针对LeetCode面试中的第二题——"两数相加",提供了详细的Java解决方案。 题目描述: 给定两个非空链表表示两个非负整数。它们的数字是以逆序方式存储的,即最高位位于链表的最前面。编写一个函数将这两个数...

    java经典实验

    在Java编程领域,经典的实验例题常常用于帮助学习者深入理解和掌握...通过实践这些题目,学习者能够更好地理解数据结构与算法,并提升问题解决能力。在实际编程工作中,这些技能对于开发高效、可维护的软件至关重要。

    Java程序设计基础篇(第8版)第六章编程题答案

    Java程序设计基础篇是学习Java编程的入门教材,其第六章通常涵盖了面向对象编程的核心概念。在这个章节中,学生会接触到类、对象、继承、封装和多态等关键概念。编程题是理解和掌握这些概念的重要实践环节。由于本书...

    基于java语言的数据结构及算法实现,LeetCode算法示例.zip

    本压缩包"基于java语言的数据结构及算法实现,LeetCode算法示例.zip"可能包含了一系列使用Java实现的LeetCode算法解题代码,特别是与文件名"java0323"相关的代码示例。 1. **数据结构** - **数组**:基础的数据结构...

Global site tag (gtag.js) - Google Analytics