黑马程序员技术交流社区
标题: Java基础算法题(第三天) [打印本页]
作者: 黄小贝 时间: 2012-10-19 00:53
标题: Java基础算法题(第三天)
饭后一道题~天天好心情~
题目:打印所有的“水仙花数” ,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
这道题我做的稍微代码长了些,思维方式导致~ 看了所谓的标准答案,比较简洁~这里都贴出来吧
先是我的:
- package day3;
- /**
- * 题目:打印所有的"水仙花数"
- * 所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
- *
- * @author yellowbaby
- *
- */
- public class Test {
- public static void main(String[] args) {
- int hundreds[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };// 百位
- int tens[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };// 十位
- int units[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };// 个位
- for (int unit : units) {
- for (int ten : tens) {
- for (int hundred : hundreds) {
- if(getCubSum(unit, ten, hundred) == getNormalSum(unit, ten, hundred)){
- System.out.println(getNormalSum(unit, ten, hundred));
- }
- }
- }
- }
- }
- /*
- * 得到该三位数三位的立方和
- */
- private static int getCubSum(int unit, int ten, int hundred) {
- return unit * unit * unit + ten * ten * ten + hundred * hundred
- * hundred;
- }
- /*
- * 得到该三位数的值
- */
- private static int getNormalSum(int unit, int ten, int hundred) {
- return unit + ten * 10 + hundred * 100;
- }
- }
复制代码 这是答案:
作者: 王龙 时间: 2012-10-19 09:27
分享了,多多学习
作者: 刘伟平 时间: 2012-10-19 11:41
这是我的做法- /*
- 关键是找出分解个位,十位,百位的方法。
- */
- class Test03
- {
- public static void main(String[] args)
- {
- for (int n = 100; n<1000 ; n++ )
- {
- int n1 = n%10;
- int n2 = n/10%10;
- int n3 = n/100%10;
- if ((n1*n1*n1+n2*n2*n2+n3*n3*n3) == n)
- {
- System.out.print(n+"\t");
- }
- }
- }
- }
复制代码
作者: 黄小贝 时间: 2012-10-19 11:46
对于这两种算法,我个人的看法是,你的这种代码精简,但是数学基础不好的人会很费解,我的虽然看起来麻烦,但是通俗易懂~
作者: 刘伟平 时间: 2012-10-19 11:50
黄小贝 发表于 2012-10-19 11:46
对于这两种算法,我个人的看法是,你的这种代码精简,但是数学基础不好的人会很费解,我的虽然看起来麻烦, ...
逻辑编程的基础还是数学嘛,每个人都有自己的思路,这个没问题啊。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |