栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java算法题挑战 Frist day

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java算法题挑战 Frist day

算法题打卡第一天:1 - 5题

第一题

  1. 问题描述:
    给定一个长度为n的数列,将这个数列按从小到大的顺序排列。(1<=n<=200)
  2. 代码块:
import java.util.Arrays;
import java.util.Scanner;
public class Main {
    public static void main(String[] args)
    {
        Scanner in =new Scanner(System.in);
        while(in.hasNext())
        {
            int n=in.nextInt();
            int[] num=new int[n];
            for (int j=0;j 
  1. 个人思路方法:
    用Java中快速输入输出进行输值输入,然后通过Java本身的Arrays.sort()函数进行排序,然后按顺序进行输值遍历进行输出。

第二题

  1. 问题描述:
    等差数列是一个很有趣的数列,它的任何相邻两项的差相等。蒜头君给出一个等差数列的前两项 a1,a2,求第n项是多少?
  2. 代码块:
import java.util.*;
public class Main{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        int a1=in.nextInt();
        int a2=in.nextInt();
        int n=in.nextInt();
        int sum=1;
        int d=a2-a1;
        sum=a1+d*(n-1);    //等差数列公式:an=a1+(n-1)*d
        System.out.print(sum);
    }
}
  1. 个人思路方法:
    通过输入给出前两项的值以及要求的n项的编号,然后通过等差数列末项公式:an=a1+(n-1)*d,进行求解

第三题

  1. 问题描述:
    1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。并按从小到大的顺序进行输出。
  2. 代码块:
public class Main {
    public static void main(String[] args)
    {
        for (int i = 1; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                for (int k = 0; k < 10; k++) {
                    for (int l = 0; l < 10; l++) {
                        if (i == l && j == k) {
                            System.out.println("" + i + j + k + l);
                        }
                    }
                }
            }
        }
    }
}
  1. 个人思路方法:
    我对这题的思路就很魔性,我用了四层的for循环遍历进行了求解。各路大神有更好的方法可以在评论区和我交流交流。

第四题

  1. 问题描述:
    153是一个非常特殊的数,它等于它的每位数字的立方和,即153=111+555+333。编程求所有满足这种条件的三位十进制数。
  2. 代码块:
import java.lang.*;
public class Main {
    public static void main(String[] args) {
        int number;
        for (number = 100; number <= 999; number++) {
            int a=number/100;
            int b=number%100/10;
            int c=number%100%10;
            int i = (int) ((Math.pow(a,3))+(Math.pow(b,3))+(Math.pow(c,3)));  
            if (number==i)
                System.out.println(number);
        }
    }
}
  1. 个人思路方法:
    这题其实是求出水仙花树题目。先给出在100到1000以内的一个输值,并按顺序依次求出百千个位上的数字,然后通过for循环遍历的方法去一个一个比对,若满足条件则输出。

第五题

  1. 问题描述:

  2. 代码块:

import java.util.*;    
public class Main{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        while(in.hasNext())
        {
            double xa=in.nextDouble();
            double ya=in.nextDouble();  //尽量不要用整型,改用double型
            double xb=in.nextDouble();
            double yb=in.nextDouble();
            double len=0.0;
            len=(double)Math.sqrt((xa-xb)*(xa-xb)+(ya-yb)*(ya-yb));
            System.out.printf("%.3f",len);
        }
    }
}
  1. 个人思路方法:
    这题我本人使用的方法很简单,就是通过输入x1,y1,x2,y2来,然后听过两点线段公式来进行解答。但是我在做的时候,遇到一个精度问题。因此我认为这题考察的是对精度问题的求解。个人觉得可以使用二维数组进行优化这题。

本人是算法界的”小白“,请各位大佬多多指教,本人解题思路并不是很优化,大佬们有好的思路,可以在评论区和我进行讨论,我一定悉听尊便。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/680872.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号