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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Jaybor 中级黑马   /  2015-5-21 20:29  /  11900 人查看  /  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 个回复

倒序浏览

回帖奖励 +2

顶下,看大神解答
回复 使用道具 举报

回帖奖励 +2

强烈支持!
回复 使用道具 举报

回帖奖励 +2

不回答也可以领的?顶一个先:lol
回复 使用道具 举报

回帖奖励 +2

顶一个
回复 使用道具 举报

回帖奖励 +2

认真看了题目
回复 使用道具 举报

回帖奖励 +2

我顶一个
回复 使用道具 举报

回帖奖励 +2

第四个是直接穷举么~
回复 使用道具 举报

回帖奖励 +2

斐波那契数列  这个是什么数?都没听过  还有后面的两道也不会  郁闷
回复 使用道具 举报

回帖奖励 +2

只是认真看了下题目:)
回复 使用道具 举报

回帖奖励 +2

下次回复,我就是写代码了!!!!
回复 使用道具 举报

回帖奖励 +2

先看看题目.
回复 使用道具 举报

回帖奖励 +2

兼职堪比开个唱啊
回复 使用道具 举报

回帖奖励 +2

我也顶一下,看大神回答
回复 使用道具 举报

回帖奖励 +2

还不会~~~~
回复 使用道具 举报

回帖奖励 +2

来看看题目
回复 使用道具 举报
围观大神 前来支持
回复 使用道具 举报
看着好像不难
回复 使用道具 举报
看看题目,领点币
回复 使用道具 举报
徐文豪 发表于 2015-5-21 21:09
斐波那契数列  这个是什么数?都没听过  还有后面的两道也不会  郁闷

就是那个兔子生仔的案例,可以看看,很经典的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马