Java经典问题算法大全.docx

上传人:b****1 文档编号:10193988 上传时间:2023-05-24 格式:DOCX 页数:50 大小:32.98KB
下载 相关 举报
Java经典问题算法大全.docx_第1页
第1页 / 共50页
Java经典问题算法大全.docx_第2页
第2页 / 共50页
Java经典问题算法大全.docx_第3页
第3页 / 共50页
Java经典问题算法大全.docx_第4页
第4页 / 共50页
Java经典问题算法大全.docx_第5页
第5页 / 共50页
Java经典问题算法大全.docx_第6页
第6页 / 共50页
Java经典问题算法大全.docx_第7页
第7页 / 共50页
Java经典问题算法大全.docx_第8页
第8页 / 共50页
Java经典问题算法大全.docx_第9页
第9页 / 共50页
Java经典问题算法大全.docx_第10页
第10页 / 共50页
Java经典问题算法大全.docx_第11页
第11页 / 共50页
Java经典问题算法大全.docx_第12页
第12页 / 共50页
Java经典问题算法大全.docx_第13页
第13页 / 共50页
Java经典问题算法大全.docx_第14页
第14页 / 共50页
Java经典问题算法大全.docx_第15页
第15页 / 共50页
Java经典问题算法大全.docx_第16页
第16页 / 共50页
Java经典问题算法大全.docx_第17页
第17页 / 共50页
Java经典问题算法大全.docx_第18页
第18页 / 共50页
Java经典问题算法大全.docx_第19页
第19页 / 共50页
Java经典问题算法大全.docx_第20页
第20页 / 共50页
亲,该文档总共50页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Java经典问题算法大全.docx

《Java经典问题算法大全.docx》由会员分享,可在线阅读,更多相关《Java经典问题算法大全.docx(50页珍藏版)》请在冰点文库上搜索。

Java经典问题算法大全.docx

Java经典问题算法大全

Java经典问题算法大全

/*【程序1】

题目:

古典问题:

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

1.程序分析:

兔子的规律为数列1,1,2,3,5,8,13,21....

*/

package.flywater.FiftyAlgorthm;

publicclassFirstRabbit{

publicstaticfinalintMONTH=15;

publicstaticvoidmain(String[]args){

longf1=1L,f2=1L;

longf;

for(inti=3;i

f=f2;

f2=f1+f2;

f1=f;

System.out.print("第"+i+"个月的兔子对数:

");

System.out.println(""+f2);

}

}

}

/*【程序2】

*作者若水飞天

题目:

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

1.程序分析:

判断素数的方法:

用一个数分别去除2到sqrt(这个数),如果能被整除,

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

*/

package.flywater.FiftyAlgorthm;

publicclassSecondPrimeNumber{

publicstaticintcount=0;

publicstaticvoidmain(String[]args){

for(inti=101;i<200;i++){

booleanb=true;//默认此数就素数

for(intj=2;j<=Math.sqrt(i);j++){

if(i%j==0){

b=false;//此数不是素数

break;

}

}

if(b){

count++;

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

}

}

System.out.println("\n素数的个数:

"+count);

}

}

/*【程序3】

作者若水飞天

题目:

打印出所有的"水仙花数(narcissusnumber)",所谓"水仙花数"是指一个三位数,

其各位数字立方和等于该数本身。

例如:

153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

1.程序分析:

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

*/

package.flywater.FiftyAlgorthm;

publicclassThirdNarcissusNum{

staticintb,bb,bbb;

publicstaticvoidmain(String[]args){

for(intnum=101;num<1000;num++){

ThirdNarcissusNumtnn=newThirdNarcissusNum();

tnn.f(num);

}

}

publicvoidf(intm){

bbb=m/100;

bb=(m%100)/10;

b=(m%100)%10;

if((bbb*bbb*bbb+bb*bb*bb+b*b*b)==m){

System.out.println(m);

}

}

}

/*【程序4】

作者若水飞天

题目:

将一个正整数分解质因数。

例如:

输入90,打印出90=2*3*3*5。

程序分析:

对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

*/

package.flywater.FiftyAlgorthm;

importjava.util.Scanner;

publicclassFourthPrimeFactor{

staticintn,k=2;

publicstaticvoidmain(String[]args){

Scanners=newScanner(System.in);

n=s.nextInt();

System.out.print(n+"=");

FourthPrimeFactorfpf=newFourthPrimeFactor();

fpf.f(n);

}

publicvoidf(intn){

while(k<=n){

if(k==n){

System.out.println(n);

break;

}elseif(n>k&&n%k==0){

System.out.print(k+"*");

n=n/k;

f(n);

break;

}elseif(n>k&&n%k!

=0){

k++;

f(n);

break;

}

}

}

}

/*【程序5】

作者若水飞天

题目:

利用条件运算符的嵌套来完成此题:

学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

1.程序分析:

(a>b)?

a:

b这是条件运算符的基本例子。

*/

package.flywater.FiftyAlgorthm;

importjava.util.Scanner;

publicclassFifthCondition{

//publicstaticfinalintS1=90;

//publicstaticfinalintS2=60;

staticintgrade;

publicstaticvoidmain(String[]args){

Scannerstr=newScanner(System.in);

ints=str.nextInt();

FifthConditionfc=newFifthCondition();

grade=pare(s);

if(grade==1){

System.out.print('A');

}elseif(grade==2){

System.out.print('B');

}else{

System.out.println('C');

}

}

publicintcompare(ints){

returns>90?

1

:

s>60?

2

:

3;

}

}

/*【程序6】

作者若水飞天

题目:

输入两个正整数m和n,求其最大公约数和最小公倍数。

1.程序分析:

利用辗除法。

*/

/*

*在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回

*较大的数,此数即为最小公约数,最小公倍数为两数之积除以最小公倍数。

**/

package.flywater.FiftyAlgorthm;

importjava.util.Scanner;

publicclassSixthCommonDiviser{

publicstaticvoidmain(String[]args){

inta,b;

Scanners1=newScanner(System.in);

Scanners2=newScanner(System.in);

a=s1.nextInt();

b=s2.nextInt();

SixthCommonDiviserscd=newSixthCommonDiviser();

intm=scd.division(a,b);

intn=a*b/m;

System.out.println("最大公约数:

"+m);

System.out.println("最小公倍数:

"+n);

}

publicintdivision(intx,inty){

intt;

if(x

t=x;

x=y;

y=t;

}

while(y!

=0){

if(x==y)return1;

else{

intk=x%y;

x=y;

y=k;

}

}

returnx;

}

}

/*【程序7】

作者若水飞天

题目:

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

1.程序分析:

利用while语句,条件为输入的字符不为'\n'.*/

package.flywater.FiftyAlgorthm;

importjava.util.*;

publicclassSeventhCharacterStatistics{

staticintdigital=0;

staticintcharacter=0;

staticintother=0;

staticintblank=0;

publicstaticvoidmain(String[]args){

char[]ch=null;

Scannersc=newScanner(System.in);

Strings=sc.nextLine();

ch=s.toCharArray();

for(inti=0;i

if(ch[i]>='0'&&ch[i]<='9'){

digital++;

}elseif((ch[i]>='a'&&ch[i]<='z')||ch[i]>'A'&&ch[i]<='Z'){

character++;

}elseif(ch[i]==''){

blank++;

}else{

other++;

}

}

System.out.println("数字个数:

"+digital);

System.out.println("英文字母个数:

"+character);

System.out.println("空格个数:

"+blank);

System.out.println("其他字符个数:

"+other);

}

}

/*【程序8】

作者若水飞天

题目:

求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

*/

/*

*算法:

定义一个变量b,赋初值为0;定义一变量sum,赋初值为0,

*进入循环后,将a+b的值赋给b,将sum+b的值赋给sum;

*同时,将a增加十倍,++i;继续循环;

*循环结束后,输出sum的值。

*/

package.flywater.FiftyAlgorthm;

importjava.util.Scanner;

publicclassEightPlus{

staticlonga=2,b=0;

publicstaticvoidmain(String[]args){

Scanners=newScanner(System.in);

intn=s.nextInt();

inti=0;

longsum=0;

while(i

b=b+a;

sum=sum+b;

a=a*10;

++i;

}

System.out.println("inputnumber:

"+n);

System.out.println(sum);

}

}

/*【程序9】

题目:

一个数如果恰好等于它的因子之和,这个数就称为"完数"。

例如6=1+2+3.编程找出1000以内的所有完数。

*/

package.flywater.FiftyAlgorthm;

publicclassNinthWanshu{

publicstaticvoidmain(String[]args){

System.out.println("1到1000的完数有:

");

for(inti=1;i<1000;i++){

intt=0;

for(intj=1;j<=i/2;j++){

if(i%j==0){

t=t+j;

}

}

if(t==i){

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

}

}

}

}

/*【程序10】

作者若水飞天

题目:

一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,

求它在第10次落地时,共经过多少米?

第10次反弹多高?

*/

package.flywater.FiftyAlgorthm;

publicclassTenthTreeFall{

staticdoubleheight=100;

staticdoubledistance=100;

publicstaticvoidmain(String[]args){

for(inti=1;i<10;i++){

distance=distance+height;

height=height/2;

}

System.out.println("路程:

"+distance);

System.out.println("高度:

"+height/2);

}

}

/*【程序11】

*作者若水飞天

题目:

有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?

都是多少?

1.程序分析:

可填在百位、十位、个位的数字都是1、2、3、4。

组成所有的排列后再去掉不满足条件的排列。

*/

/*算法:

3个for循环加一个if语句;

*

*/

package.flywater.FiftyAlgorthm;

publicclassEleventhNumberRange{

publicstaticvoidmain(String[]args){

intcount=0;

for(intx=1;x<5;x++){

for(inty=1;y<5;y++){

for(intz=1;z<5;z++){

if(x!

=y&&y!

=z&&x!

=z){

count++;

System.out.print(x*100+y*10+z+"");

if(count%4==0){

System.out.println();

}

}

}

}

}

System.out.println("共有"+count+"个三位数");

}

}

/*【程序12】

*作者若水飞天

题目:

企业发放的奖金根据利润提成。

利润(I)低于或等于10万元时,奖金可提10%;

利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,

可可提成7.5%;20万到40万之间时,高于20万元的部分,

可提成5%;40万到60万之间时高于40万元的部分,可提成3%;

60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,

从键盘输入当月利润I,求应发放奖金总数?

1.程序分析:

请利用数轴来分界,定位。

注意定义时需把奖金定义成长整型。

*/

/*注意:

要精确到小数点后多少位,用DecimalFormatdf=newDecimalFormat("#0.0000");

*

*/

package.flywater.FiftyAlgorthm;

importjava.text.DecimalFormat;

importjava.util.*;

publicclassTwelfthProfitAward{

staticdoubleprofit=0;

staticdoubleaward=0;

publicstaticvoidmain(String[]args){

Scanners=newScanner(System.in);

profit=s.nextInt();

System.out.println("输入的利润是"+profit+"万");

if(profit>0&&profit<=10){

award=profit*0.1;

}elseif(profit>10&&profit<=20){

award=10*0.1+(profit-10)*0.075;

}elseif(profit>20&&profit<=40){

award=10*0.1+10*0.075+(profit-20)*0.05;

}elseif(profit>40&&profit<=60){

award=10*0.1+10*0.075+20*0.05+(profit-40)*0.03;

}elseif(profit>60&&profit<=100){

award=20*0.175+20*0.05+20*0.03+(profit-60)*0.015;

}elseif(profit>100){

award=20*0.175+40*0.08+40*0.015+(profit-100)*0.01;

}

DecimalFormatdf=newDecimalFormat("#0.00000");

System.out.println("应该提取的奖金是"+df.format(award)+"万");

}

}

/*【程序13】

*作者若水飞天

题目:

一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

1.程序分析:

在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,

如果开方后的结果满足如下条件,即是结果。

请看具体分析:

*/

package.flywater.FiftyAlgorthm;

publicclassThirteenthTwiceSqrt{

publicstaticvoidmain(String[]args){

for(longl=1L;l<100000;l++){

if(Math.sqrt((long)(l+100))%1==0){

if(Math.sqrt((long)(l+268))%1==0){

System.out.println(l+"加100是一个完全平方数,再加168又是一个完全平方数");

}

}

}

}

}

*【程序14】

*作者若水飞天

题目:

输入某年某月某日,判断这一天是这一年的第几天?

1.程序分析:

以3月5日为例,应该先把前两个月的加起来,

然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

*/

package.flywater.FiftyAlgorthm;

importjava.util.Scanner;

importjava.io.*;

publicclassFourteenthYearMonthDay{

publicstaticvoidmain(String[]args){

intyear,month,day;

intdays=0;

intd=0;

FourteenthYearMonthDayfymd=newFourteenthYearMonthDay();

System.out.print("Inputtheyear:

");

year=fymd.input();

System.out.print("Inputthemonth:

");

month=fymd.input();

System.out.print("InputTheDay:

");

day=fymd.input();

if(year<0||month<0||month>12||day<0||day>31){

System.out.println("Inputerror,pleaserunthisprogramagain!

");

System.exit(0);

}

for(inti=1;i

switch(i){

case1:

case3:

case5:

case7:

case8:

case10:

case12:

days=31;

//d+=days;

break;

case4:

case6:

case9:

case11:

days=30;

//d+=days;

break;

case2:

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

=0)){

days=29;

}else{

days=28;

}

//d+=days;

break;

}

d+=days;

}

System.out.println(year+":

"+month+":

"+day+"是今年的第"+(d+day)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 外语学习 > 其它语言学习

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2