每日一算法,开启头脑风暴!

世人皆愚 2014-03-26 03:00:37
加精
大家好,从今天开始,我将每天为大家列出一个关于java的算法实现.
本人菜鸟一个,题目基本都是网上搜来的比较经典的题目,个人水平也有限,
所以实现方法可能比较老土.
希望新手有所学习,老鸟博君一乐!

今天第一天,先上五个经典算法!

ps:这些算法都是本人自己写的,也难免会出错,希望大家指正.
另外有新颖的题目也欢迎大家提出来,我会挨个做的!

算法1:

算法2:

算法3:

算法4:

算法5:


工具类(获取键盘输入):


main方法:



输出结果:
-----begin-----
题目1:一个数如果恰好等于它的因子之和,这个数就称为 '完数'。例如6=1+2+3.编程 找出1000以内的所有完数。
1000以内所有完数为:
6
28
496
-----begin-----
题目2:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。假设a=2,相加x次,x为键盘输入次数
Please enter a int :5
your input int is :5
计算结果为:24690
-----begin-----
题目3:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
假设共12个月
第1月兔子数为:2
第2月兔子数为:2
第3月兔子数为:4
第4月兔子数为:6
第5月兔子数为:10
第6月兔子数为:16
第7月兔子数为:26
第8月兔子数为:42
第9月兔子数为:68
第10月兔子数为:110
第11月兔子数为:178
第12月兔子数为:288
-----begin-----
题目4:判断101-200之间有多少个素数,并输出所有素数。
第1个素数为:101
第2个素数为:103
第3个素数为:107
第4个素数为:109
第5个素数为:113
第6个素数为:127
第7个素数为:131
第8个素数为:137
第9个素数为:139
第10个素数为:149
第11个素数为:151
第12个素数为:157
第13个素数为:163
第14个素数为:167
第15个素数为:173
第16个素数为:179
第17个素数为:181
第18个素数为:191
第19个素数为:193
第20个素数为:197
第21个素数为:199
共有21个素数
-----begin-----
题目5:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
Please enter a int :hello word! fuck u!@#!@^!#%&!@#
your input string is :"hello word! fuck u!@#!@^!#%&!@#"
数字个数为:0
字母个数为:14
空格个数为:3
其他字符个数为:14





今天给大家一个经典的落地反弹算法-.-

另外本人现在正在写一个迷宫生成和破解..
感觉很麻烦的样子.
如果有人感兴趣, 我就开个贴讨论一下自己的思路和代码的编写~

不过因为还要工作~ 所以这个迷宫算法写的估计会慢一点

...全文
20755 190 打赏 收藏 转发到动态 举报
写回复
用AI写文章
190 条回复
切换为时间正序
请发表友善的回复…
发表回复
自由自在_Yu 2016-11-10
  • 打赏
  • 举报
回复
聪头 2016-11-10
  • 打赏
  • 举报
回复
戀丶缈 2016-11-09
  • 打赏
  • 举报
回复
引用 1 楼 u013266644 的回复:
学习了
哈哈
bree06 2016-11-09
  • 打赏
  • 举报
回复
引用 186 楼 loujiege4112 的回复:
[quote=引用 179 楼 bree06 的回复:]
回复你的一个小算法哈,
public class demo {
	/**
	 * .输入一个正数n,输出所有和为n 连续正整数序列.
	 *  例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3 个连续序列1-5、4-6 和7-8。
	 */
	public static void one(int a){
		int i=1;
		int j=1;
		for(i=1;i<=a-1;i++){
			int x=0;
			for(j=i;x<=15;j++){
			x=x+j;
			if(x==a){
				System.out.println(i+"--"+j);
			}
			}
		}
	}
	public static void main(String[] args) {
		one(15);
	}
}
[/quote]
谁主沉浮oo7 2016-11-09
  • 打赏
  • 举报
回复
引用 179 楼 bree06 的回复:
我也来发两个算法. 1.给出一个整数,计算从0到这个整数(包含这个整数)1出现的次数。例如: 给出整数:13,从0到13经过0,1,2,3,4,5,6,7,8,9,10,11,12,13,数字1出现了6次,返回6。 要求:不要遍历所有的数 2.输入一个正数n,输出所有和为n 连续正整数序列. 例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3 个连续序列1-5、4-6 和7-8。 继续...继续...
回复你的一个小算法哈,
public class demo {
	/**
	 * .输入一个正数n,输出所有和为n 连续正整数序列.
	 *  例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3 个连续序列1-5、4-6 和7-8。
	 */
	public static void one(int a){
		int i=1;
		int j=1;
		for(i=1;i<=a-1;i++){
			int x=0;
			for(j=i;x<=15;j++){
			x=x+j;
			if(x==a){
				System.out.println(i+"--"+j);
			}
			}
		}
	}
	public static void main(String[] args) {
		one(15);
	}
}
谁主沉浮oo7 2016-11-08
  • 打赏
  • 举报
回复
楼主怎么不更了啊,这些小算法挺好的啊、
bree06 2016-11-07
  • 打赏
  • 举报
回复
小球落地更简洁的方法
static void six1(int n) {
     // 每次弹回原来的一半所以是一个等比数列, 公比为1/2. 第10次高度是100/2^10
    System.out.println("第"+n+"次反弹"+((100.0/(1<<n)))+"米高度");
    // 经过多少米, 就是计算等比数列前N项和. 首项a1,公比q(q不等于1),前n项和Sn=a1(1-q^n)/(1-q)。
    // 因为弹起再落下实际经过了两次, 为了满足这个公式这里将100多计算一次最后再减掉即可
    System.out.println("第"+n+"次落地时,共经过"+(100*(1-(1.0/(1<<n)))*4-100)+"米");
}
兔子的计算采用费式数列会产生很多重复计算,直接换成循环更好
public int f(int n) {
    int a1 = 1, a2 = 1, number = a1;
    for (int i = 3; i <= n; i++) {
        number = a1 + a2;
        a1 = a2;
        a2 = number;
    }
    return number; // 这里算出来是多少对, 如果算只的话x2就行
}
包包大菌 2016-08-22
  • 打赏
  • 举报
回复
下落那题改了一下。 public static void six(int n){ double x=100,distance=0; for(int i=0;i<n;i++){ distance = distance+x; x = x/2; if(n-1!=i){ distance = distance+x; } } System.out.println("第"+n+"次落地时,共经过"+distance+"米"); System.out.println("第"+n+"次反弹"+x+"米高度"); }
Cc_Davis_cC 2016-08-16
  • 打赏
  • 举报
回复
Volcano__Liu 2016-08-16
  • 打赏
  • 举报
回复
球落下的错了,多算了一个落地反弹。
以技入道 2016-08-15
  • 打赏
  • 举报
回复
mark!!
life_wander 2016-08-15
  • 打赏
  • 举报
回复
只有几行代码的算法,并无卵用..
bree06 2016-08-15
  • 打赏
  • 举报
回复
我也来发两个算法. 1.给出一个整数,计算从0到这个整数(包含这个整数)1出现的次数。例如: 给出整数:13,从0到13经过0,1,2,3,4,5,6,7,8,9,10,11,12,13,数字1出现了6次,返回6。 要求:不要遍历所有的数 2.输入一个正数n,输出所有和为n 连续正整数序列. 例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3 个连续序列1-5、4-6 和7-8。 继续...继续...
效林少爷 2016-01-14
  • 打赏
  • 举报
回复
支持楼主 好好学习学习
  • 打赏
  • 举报
回复
算法的关键是思路,建议楼主在贴代码的同时发一下思路会更好一些,说说你是怎么理解的
xb12369 2015-12-23
  • 打赏
  • 举报
回复
刚毕业的时候天天玩这个 现在做开发久了 反而不会写了 更多的市区实现业务和功能
land_xiao 2015-12-23
  • 打赏
  • 举报
回复
[code=java]public class PrimeFactor { public static void main(String[] args) { int n = 90; int i=2; for(; i<=n; i++) { if(n%i==0){ if(i==n) { System.out.println(n); } else{ n=n/i; System.out.println(i); i=i-1; } } } } } [/cod分解质因数算法
sinat_29350355 2015-09-29
  • 打赏
  • 举报
回复
对了楼主,第三题的算法包不包括 出生的兔子在生兔子的情况啊,我以为是二代兔子在4个月后还会在生兔子
  • 打赏
  • 举报
回复
厉害啊,学习了
听!起风了~~~ 2015-09-22
  • 打赏
  • 举报
回复
引用 8 楼 u014371430 的回复:
[quote=引用 6 楼 huxiweng 的回复:] 提个建议,代码不要贴图,直接用代码块发比较好
好的, 我没注意~ 没怎么用过论坛这些工具[/quote] 如果楼主发来的代码我们可以直接复制粘贴到自己的本地,不需要手敲一遍,个人认为很不好,原因相信大家都懂的
加载更多回复(150)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧