zoukankan      html  css  js  c++  java
  • 50道java算法题(一)

    【程序1】 

    题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 

    1.程序分析:   兔子的规律为数列1,1,2,3,5,8,13,21....

    f(n)=f(n-2)+f(n-1) 使用递归

    public static int fib(int n)
        {
            
            if(n==0 || n==1 )
            {
                return 1;
                
            }
            else
            {
                return fib(n-1)+fib(n-2);
            }
            

    【程序2】 

    题目:判断101-200之间有多少个素数,并输出所有素数。 

    1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 

    则表明此数不是素数,反之是素数。 

       

     public static boolean fn(int n)
    
        {
    
            int flag=(int) Math.sqrt(n);
    
            boolean prime=true;
    
            for(int i=2;i<=flag;i++)
    
            {
    
                if(n%i==0)
    
                {
    
                    prime=false;
    
                    break;
    
                }
    
            }
    
            return prime;
    
        }
    
        public static void main(String[] args) {
    
            // TODO Auto-generated method stub
    
            for(int i=101;i<=200;i++)
    
            {
    
                if(fn(i))
    
                {
    
                    System.out.println(i);
    
                }
    
            }
    
         
    
        }

    【程序3】 

    题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。 

    程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

    for(int i=100;i<=999;i++)
    
            {
    
                int a=i/100;
    
                int b=(i-a*100)/10;
    
                int c=i%10;
    
                if(a*a*a+b*b*b+c*c*c==i)
    
                {
    
                    System.out.println(i);
    
                }
    
            }

    【程序4】

    字符串反转

    题目:编程序将一个字符串反转。

    输入任意字符串,比如abcd转换成dcba

    public static String reverse(String str)
        {
            char [] mystr=str.toCharArray();
            for(int count=0;count<str.length()/2;count++)
            {
                char temp=mystr[count];
                mystr[count]=mystr[str.length()-count-1];
                mystr[str.length()-count-1]=temp;
                
            }
            str=new String(mystr);  //字符串转数组
            return str;
            
        }

    【程序5】
    题目:有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。

    public static void numberOfChar(String str)
        {
            char[] mystr=str.toCharArray();
            int nuberic=0;
            int letter=0;
            int chinese_character=0;
            
            for(int count=0;count<mystr.length;count++)
            {
                int cn=mystr[count];
                if(cn>=19968  &&  cn<=40623)   //java汉字字符编码
                {
                    chinese_character++;
                }
                if( Character.isDigit(mystr[count]))
                {
                    nuberic++;
                }
                else if(Character.isLetter(mystr[count]))
                {
                    letter++;
                }
                 
            }
            System.out.println("number is " +nuberic +"
    letter is "+letter+"
    chinese letter"+chinese_character);
        }
  • 相关阅读:
    python 之字符编码
    python文件处理
    迭代器和生成器
    内置函数和匿名函数
    函数之递归
    函数 之装饰器
    python 函数进阶与闭包
    python 之 函数
    python之运算符
    python字符串内置方法
  • 原文地址:https://www.cnblogs.com/tobecrazy/p/3523388.html
Copyright © 2011-2022 走看看