zoukankan      html  css  js  c++  java
  • PAT 1005. 继续(3n+1)猜想 (25) JAVA

    当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对n=3进行验证的时候,我们需要计算3、5、8、4、2、1,则当我们对n=5、8、4、2进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这4个数已经在验证3的时候遇到过了,我们称5、8、4、2是被3“覆盖”的数。我们称一个数列中的某个数n为“关键数”,如果n不能被数列中的其他数字所覆盖。

    现在给定一系列待验证的数字,我们只需要验证其中的几个关键数,就可以不必再重复验证余下的数字。你的任务就是找出这些关键数字,并按从大到小的顺序输出它们。

    输入格式:每个测试输入包含1个测试用例,第1行给出一个正整数K(<100),第2行给出K个互不相同的待验证的正整数n(1<n<=100)的值,数字间用空格隔开。

    输出格式:每个测试用例的输出占一行,按从大到小的顺序输出关键数字。数字间用1个空格隔开,但一行中最后一个数字后没有空格。

    输入样例:

    6
    3 5 6 7 8 11
    

    输出样例:

    7 6
    
    依旧是使用容器排序,为了练习,当然也可以使用冒泡,选择,快速等排序
     1 import java.util.ArrayList;
     2 import java.util.Arrays;
     3 import java.util.Collections;
     4 import java.util.List;
     5 import java.util.Scanner;
     6 
     7 public class Continue3nGuess {
     8     public static void main(String[] args) {
     9         int n;
    10         Scanner input = new Scanner(System.in);
    11         n = Integer.parseInt(input.nextLine());
    12         String str = input.nextLine();
    13         int[] arr = new int[200];
    14         int[] a = new int[200];
    15         String[] team = str.split(" ");
    16         for(int i=0;i<n;i++){
    17             arr[i] = Integer.parseInt(team[i]);
    18             a[i] = arr[i];
    19         }
    20         for(int i=0;i<n;i++){
    21             if(a[i]!=-1){
    22                 while(a[i]!=1){
    23                     if(a[i]%2==0){
    24                         a[i] = a[i]/2;
    25                     }
    26                     else{
    27                         a[i] = (a[i]*3+1)/2;
    28                     }
    29                     for(int j=0;j<n;j++){
    30                         if(a[j]!=-1&&arr[j]==a[i]){
    31                             a[j] = -1;
    32                             break;
    33                         }
    34                     }
    35                 }
    36             }
    37         }
    38         
    39         int j = 0;
    40         int sum = 0;
    41         int[] b = new int[200];
    42         List<Sort> s = new ArrayList<Sort>();
    43         for(int i=0;i<n;i++){
    44             if(a[i]!=-1){
    45                 s.add(new Sort(arr[i]));
    46             }
    47         }
    48         Collections.sort(s);
    49         System.out.print(s.get(0).b);
    50         for(int i=1;i<s.size();i++){
    51             System.out.print(" "+s.get(i).b);
    52         }
    53         
    54         
    55     }
    56 
    57 }
    58 class Sort implements Comparable<Sort>{
    59     int b;
    60     public Sort(int b){
    61         this.b = b;
    62     }
    63 
    64     @Override
    65     public int compareTo(Sort o) {
    66         // TODO Auto-generated method stub
    67         return -(b-o.b);
    68     }
    69     
    70 }
  • 相关阅读:
    sql server 2016新特性 查询存储(Query Store)的性能影响
    Spring 事务管理详情介绍
    python爬虫之快速对js内容进行破解
    python爬虫的一个常见简单js反爬
    温习pycharm
    宋朝官员分析随堂理解笔记
    K-Means改进模式
    jupyter 饼图
    WebDriver常用的API使用详解
    从浏览器启动开始
  • 原文地址:https://www.cnblogs.com/lolybj/p/6171404.html
Copyright © 2011-2022 走看看