A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Jaybor 中级黑马   /  2015-5-21 20:29  /  12497 人查看  /  239 人回复  /   3 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Jaybor 于 2015-5-24 00:37 编辑

1.遍历出斐波那契数列前100个数
2.任意定义一个数组,用for,while和递归三种方式求和
3.对于任意一个给定数组比如【1,23,56,7】,给出用数组元素能够拼出的最大整数,这里的结果为756231
4.1,2,3,4,5,6,7,8,9这9个数的排列顺序不能动,元素之间可以添加加号或者减号或者什么都不加,但要保证最终的结果为100;
遍历出所有的可能性。
5.编写一个交错排列元素的函数,比如["2","5","7"]和["a","c","e"]得到结果[2,a,5,c,7,e],bingo~
ps:现在上海66期安卓,有问题可以问,不过估计得很晚才能回复~

这里可能大多数童鞋都在第4题卡住了,我从网上拷了答案给大家(解法就是普通的暴力遍历,主要是递归理解起来有点头疼):
对这里的递归可以这样理解:


  1. public class Demo
  2. {
  3.     static char operator[] = new char[8];
  4.     static char expre[] = new char[]
  5.     { '1', '+', '2', '+', '3', '+', '4', '+', '5', '+', '6', '+', '7', '+',
  6.             '8', '+', '9' };

  7.     public static void main(String[] args)
  8.     {
  9.         fun(0);
  10.     }

  11.     public static void fun(int n)
  12.     {
  13.         if (8 == n)
  14.             handle(100);
  15.         else
  16.         {
  17.             /*
  18.                             这里的递归原理是:
  19.                             1.注意观察我标记的断点位置,n从0-7断点以下的程序都是没有机会执行的。
  20.                             2.当n=7的时候程序会从断点开始继续往下运行,然后是n=6(3*3种情况),5(3*3*3种情况),4,3,,,0(3的8次方)
  21.                             3.这个复杂递归的原理在于实现3的8次方种可能性。
  22.                             4.这里用*号代替空,不要以为是错的。。。。   
  23.             */
  24.             operator[n] = '+';
  25.             expre[n * 2 + 1] = operator[n];
  26.             fun(n + 1);//-------------断点----------------
  27.             operator[n] = '-';
  28.             expre[n * 2 + 1] = operator[n];
  29.             fun(n + 1);
  30.             operator[n] = '*';
  31.             expre[n * 2 + 1] = operator[n];
  32.             fun(n + 1);
  33.         }
  34.     }

  35.     private static void handle(int n)
  36.     {
  37.         StringBuffer sb = new StringBuffer();
  38.         // 将乘法替换成空格
  39.         for (int i = 0; i < expre.length; i++)
  40.             if (expre[i] != '*')
  41.                 sb.append(expre[i]);
  42.         String expression = sb.toString();
  43.         // 分割等式, 先根据运算符分割
  44.         String[] num = expression.split("[+-]");
  45.         // 根据数字,分割出其中的运算符
  46.         String[] operator = expression.split("[1-9]");

  47.         int sum = Integer.parseInt(num[0]);

  48.         for (int i = 0, j = 1; i < operator.length; i++)
  49.         {
  50.             if (operator[i].equals("+"))
  51.                 sum += Integer.parseInt(num[j++]);
  52.             if (operator[i].equals("-"))
  53.                 sum -= Integer.parseInt(num[j++]);
  54.         }

  55.         if (sum == n)
  56.             System.out.println(expression + "=" + n);
  57.     }

  58. }
复制代码
其他题目个人觉得都不难,所以也不想拷代码了;进黑马要学的东西太多,我也没什么时间来论坛了,大家权且拿这些题练练手;
如果有什么入学的问题可以问我,还有你们如果想提交答案啥的可以提交,我如果上论坛了必定会给答题的小伙伴分的哈哈,
毕竟我知道攒黑马币的不易,就这样吧,我得睡了,明天还得上课呢!


点评

求大神解答  发表于 2015-5-23 07:47

评分

参与人数 1技术分 +2 收起 理由
万合天宜 + 2

查看全部评分

239 个回复

正序浏览
酱油 来自手机 高级黑马 2016-1-26 11:14:01
238#
领币。。。。。
回复 使用道具 举报
lktz 中级黑马 2016-1-26 00:10:25
237#
看看题目
回复 使用道具 举报
顶一个,不错的题目
回复 使用道具 举报
顶一个!!!!
回复 使用道具 举报
领币,看题目,没兴趣
回复 使用道具 举报
领币领币
回复 使用道具 举报
福利贴啊 顶一个
回复 使用道具 举报
看一看。。
回复 使用道具 举报
66666666666666666活捉大牛一只
回复 使用道具 举报
赞一个,
回复 使用道具 举报
围观,看看大神给的答案
回复 使用道具 举报
都不太懂- -!!!坐等大神
回复 使用道具 举报
看来黑马币不好, 之后我也可能这么发.....
回复 使用道具 举报
斐波那契数列是着呢么了?求大神指导
回复 使用道具 举报
不错哒,先复制下来再看
回复 使用道具 举报
看看题目,领点币
回复 使用道具 举报
看着好难啊
回复 使用道具 举报
我是来要币的,顶下下咯
回复 使用道具 举报
给力啊 哥们
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马