`

面试中的一些算法问题

阅读更多

要求从键盘输入10个数并按从小到大的顺序排序。用JAVA做。

public static void main(String args[]){

              /*int [] num={1,2,5,4,3,6};

              Arrays.sort(num);

              for(int i=0;i<num.length;i++)

                     System.out.println(num[i]);*/

              int[] sz=new int[10];

              int n=0;

              String str;

              InputStreamReader isr=new InputStreamReader(System.in);

              BufferedReader br=new BufferedReader(isr);

              try{

              while(n<10)

              {

              str=br.readLine();

              sz[n]=Integer.parseInt(str);

              n++;

              }

              Arrays.sort(sz);

              //sort(sz,10);

              for(int i=0;i<10;i++)

              System.out.println(sz[i]);

              }

              catch(Exception e){}

              }

       private static void sort(int[] sz,int n) {

                     int temp,i,j;

                     for(i=n-1;i>0;i--)

                     for(j=0;j<i;j++)

                     if(sz[j]>sz[j+1])

                     {

                     temp=sz[j];

                     sz[j]=sz[j+1];

                     sz[j+1]=temp;

                     }

              }

 

1.父子俩的年龄:父亲今年30岁,儿子今年6岁,问多少年后父亲的年龄是儿子年龄的2倍。*/

package exec;.

public class Age ...{

    public static void main(String[] args) ...{

        // TODO Auto-generated method stub

        int father = 30;

        int son = 6;

        for(int i=1;i<100;i++)

        ...{

            if((father+i)==((son+i)*2))...{

                System.out.println(i + " ");} } }}

2.编写程序,将两个各有6个整数的数组,合并成一个由小到大排列的数组,(该数组的长度为12)*/

package exec;

import java.util.Arrays;

public class Arrary ...{

    public static void main(String[] args) ...{

        // TODO Auto-generated method stub

        int a[] = ...{ 1, 3, 5, 8, 9, 4 };

        int b[] = ...{ 2, 4, 7, 6, 5, 9 };

        int c[] = new int[12];

        for (int i = 0; i < 6; i++) ...{

            c[i] = a[i];

            c[i + 6] = b[i];

        }

        Arrays.sort(c);

        for (int i = 0; i < 12; i++) ...{

            System.out.print(c[i] + " ");   } }}

3.一个球从100米高度自由落下后,反弹回原来高度的一半。按此规律,到第10次落地时,行程共有多少米? * 然后将反弹起多高? */

package exec;

public class BallFall ...{

    public static void main(String[] args) ...{

        // TODO Auto-generated method stub

        float heigher = 100;

        float sum = 0;

        for (int i = 1; i < 10; i++) ...{

            heigher /= 2;

            sum += heigher;

            System.out.println("" + i + "" + "总行程" + sum + "" + "反弹"

                    + heigher + ""); } }}

4. 换硬币:把一元人民币换成5分、2分、1分的硬币,有多少种换法? */

package exec;

public class ChangeCoin ...{

    public static void main(String[] args) ...{

        // TODO Auto-generated method stub

        int num = 0;

        for (int i = 1; i <= 20; i++) ...{

            for (int j = 1; j <= 50; j++) ...{

                for (int k = 1; k <= 100; k++) ...{

                    if (5 * i + 2 * j + 1 * k == 100) ...{

                        num += 1;     }   }          }        }

        System.out.print(num + "种换法");   }}

5.牛的繁殖问题 :有位科学家曾出了这样一道数学题:有一头母牛,它每年年初要生一头小母牛;

* 每头小母牛从第四个年头起,每年年初也要生一头小母牛。按此规律,若无牛死亡,第20年头上共有多少头母牛?*/

package exec;

public class CountCow ...{

    int[] cowNumber = new int[21];

    public void count(int increaseCycle, int years) ...{

        cowNumber[0] = 1;

        for (int currentYear = 1; currentYear <= years; currentYear++) ...{

            if (currentYear < increaseCycle) ...{

                cowNumber[currentYear] = cowNumber[currentYear - 1] + 1;

            } else ...{

                cowNumber[currentYear] = cowNumber[currentYear - 1]

                        + cowNumber[currentYear - increaseCycle + 1];

            }

            System.out.println("" + currentYear + "" + cowNumber[currentYear]);    } }

    public static void main(String[] args) ...{

        int increaseCycle = 4;

        int years = 20;

        CountCow cow = new CountCow();

        cow.count(increaseCycle, years);   }}

6.打印出500之内所有能被79整除的数*/

package exec;

public class Divide ...{

    public static void main(String[] args) ...{

        // TODO Auto-generated method stub

        for (int i = 0; i <= 500; i++) ...{

            if ((i % 7 == 0) | (i % 9 == 0)) ...{

                System.out.print(i + " "); }   } }}

7. * 编写一个Java程序 使它随即产生18002000之间的年份,打印它是否是一个闰年,闰年是1584年以后的年份,它要能被400整除, * 要能被4整除但是不能被100整除,已知使用Math.random()方法可以产生01之间的随即小数. ) */

package exec;

public class EmergerYear ...{

    public static void main(String[] args) ...{

        // TODO Auto-generated method stub

        for (int i = 0; i < 100; i++) ...{

            long year = (Math.round(Math.random() * 200) + 1800);

            if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) ...{

                System.out.println(year + "是闰年!");

            } else             System.out.println(year + "不是闰年!");   } }}

8.编写程序以递归的方式实现1+2+3+...+n(n=200)的计算.*/

package exec;

public class Number ...{

    public static void main(String[] args) ...{

        // TODO Auto-generated method stub

        System.out.print(numbers(200));

    } public static int numbers(int n)...{

        return n<=1?1:n+numbers(n-1);    }}

9.给定一个数,并由键盘输入若干个数,找出与预先给定的数最接近的数,并指出它是由键盘输入的第几个数。

package exec;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

public class NumberCompare ...{

    public static final int NUMBER = 80; // 给定一个要比较的数

    public static void main(String args[]) ...{

        System.out.print("Please input numbers: ");

        BufferedReader io = new BufferedReader(new InputStreamReader(System.in));

        try ...{

            // 从键盘输入若干数

            String line = io.readLine();

            // 放入数组中

            String[] items = line.split(" ");

            int temp = 5000, x = 0, place = 0;

            System.out.println("target number: 80");

            // 和给定的数比较大小

            for (int i = 0; i < items.length; i++) ...{

                if (Integer.parseInt(items[i]) > NUMBER) ...{

                    x = Integer.parseInt(items[i]) - NUMBER;

                } else ...{

                    x = NUMBER - Integer.parseInt(items[i]);

                }

                if (x < temp) ...{

                    temp = x;

                    place = Integer.parseInt(items[i]);   }   }

            System.out.println("place: " + place);

            io.close();

            System.exit(0);

        } catch (IOException e) ...{

            e.printStackTrace(); }   }}

10.使用Java,long.Math,生成10099之间的随即整数,求出它们中的最小值和最大值*/

package exec;

import java.util.Iterator;

import java.util.TreeSet;

public class RandomNumber ...{

    public static void main(String[] args) ...{

        // TODO Auto-generated method stub

        /** *//**方法1

        long max = 50;

        long min = 50;

        for(int i=0; i<10; i++){

            long number = Math.round(Math.random()*99 + 1);

            System.out.print(number + " ");

            max = Math.max(max, number);

            min = Math.min(min, number);

            if(i == 9){

                System.out.print(" Math MaxNumber=" + max + " MinNumber=" + min);     }       }

        //方法2

        TreeSet ts = new TreeSet();

        for(int i=0; i<10; i++)...{

            long number = Math.round(Math.random()*99 + 1);

            System.out.print(number + " ");

            ts.add(number);

        }

        System.out.println();

        Iterator it = ts.iterator();

        while(it.hasNext())...{

            System.out.print(it.next() + " ");       }

        System.out.print(" Math MaxNumber=" + ts.last() + " MinNumber=" + ts.first());}}

11.假设有一条钢材长2000,每天截取其中的一半,编写一程序求出多少天后,钢材的长度小于5.*/

package exec;

public class SteelSection ...{

    public static void main(String[] args) ...{

        // TODO Auto-generated method stub

        int i = 0;

        float steel = 2000f;

        while (steel >= 5) ...{

            i++;

            steel = steel / 2;

            System.out.println(i + "天后钢管长" + steel + ""); }   }}

12.完全数是指其所有因子(包括1但不包括该数自身)的和等于该数,例如28=1+2++4+7+14,28就是一个完全数. * 编写一个程序求出210000之间的所有完全数.*/

package exec;

public class WanNumber ...{

    public static void main(String[] args) ...{

        // TODO Auto-generated method stub

        int m = 0;

        for (int n = 2; n <= 10000; n++) ...{

            m = 0;

            for (int i = 1; i < n; i++) ...{

                if (n % i == 0) ...{

                    m += i;

                    //if (m == n) ...{ System.out.println(n + "个完全数"); }

               }  

         }if (m == n) ...{ System.out.println(n + "个完全数"); }  } }}

//////////////////////////////

              int n,sum =0;

                for ( int i = 2; i <= 10000;i++)

                {

                       sum =0;

                       for ( int j = 1;j < i; j++)

分享到:
评论

相关推荐

    算法面试经典 100题

    面试经常遇到的,编程算法题。里面包括的都是面试官经常考你的算法设计问题,

    前端JS面试中常见的算法问题总结

    虽然说在前端很少有机会接触到算法,大多都交互性的操作,然而从各大公司面试来看,算法依旧是考察的一...下面这篇文章就给大家总结了在前端JS面试中常见的算法问题,有需要的朋友们可以参考借鉴,下面来一起看看吧。

    java面试中的算法

    将面试的朋友可以看看,一般面试也就出像这样的算法了~

    编程之法:面试和算法心得 清晰完整版

    此外,《编程之法:面试和算法心得》每一章都有“举一反三”和“习题”,以便读者及时运用所学的方法解决相似的问题,且在附录中收录了语言、链表、概率等其他题型。书中的每一道题都是面试的高频题目,反复出现在近...

    算法分析与设计+研究生复试+求职+面试题

    包括算法分析与设计基本概念及各章节问题回答。可供研究生复试或相关专业岗位面试使用。 1. 简述算法定义、属性及指标; 2. 什么是算法分析,怎么做算法设计; 3. 什么是算法复杂性; 4. 枚举法算法的基本思想; 5. ...

    面试常见基础算法题总结

    面试算法题总结

    JAVA经典算法面试39题及答案

    JAVA经典算法面试39题及答案,算法是不得不看的

    面试中经常会碰到的算法问题

    面试中经常会碰到的算法问题,如斐波那契序列、汉诺塔、二叉树遍历、数学计算、字符串操作

    面试常考算法

    包含排序算法的八种,是面试常考的算法题,含有排序思想,代码,时间复杂度,空间复杂度的比较等等

    面试常见算法题

    这是在面试中遇到的一些常见算法题,笔试面试经常遇到,所以总结了一下,方面以后查看,分享给大家。

    java面试,算法

    java面试,算法

    机器学习面试必会算法集合

    机器学习面试必会算法集合,xgboost调参,boosting,LR,梯度下降,过拟合问题,HMM算法,FFM算法,SVD算法,SVM算法,决策树算法,随机森林算法等等

    java面试题(算法+数据库)

    这是面试中遇到的经典算法问题包括古典算法和数据库sql 通常在面试中占很高评估分

    经典面试算法题N道

    经典面试算法题N道,经典面试算法题N道,经典面试算法题N道,经典面试算法题N道

    编程面试常见的算法汇总

    编程面试常见的算法汇总编程面试常见的算法汇总编程面试常见的算法汇总编程面试常见的算法汇总编程面试常见的算法汇总

    最全的Java面试题整理(含算法题)

    从大学到现在,参加过很多面试,经常会被问到一些基本的算法题,而大部分算法的理论及思想,我们曾经都能倒背如流,并且也用语言实现过,可由于在项目开发中应用的比较少,久而久之就忘记了,造成在面试中很尴尬的...

    常见面试中C++算法大全

    该资料里边包含了面试中几乎所有的常用算法题目

    java算法与编程面试题

    java算法与编程面试题java算法与编程面试题java算法与编程面试题java算法与编程面试题java算法与编程面试题

    编程之法:面试和算法心得

    编程之法:面试和算法心得

    华为面试常用算法

    华为面试中常考的一些算法,如排序,数独,最短路径等等

Global site tag (gtag.js) - Google Analytics