免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 草上飞2008
打印 上一主题 下一主题

大赛评选结果已出,敬请关注!:PHP编程大赛隆重启动,PHP开发大挑战 [复制链接]

论坛徽章:
0
131 [报告]
发表于 2010-09-29 21:47 |只看该作者
  1. <?php

  2. function insert_new_val($arr, $new_val)
  3. {
  4.     $head = 0;
  5.     $end  = count($arr) - 1;
  6.     $flag = FALSE;
  7.     $arr[] = $new_val;//add new value
  8.     if ($arr[$end] < $arr[$head])
  9.         $flag = TRUE;
  10.     if ($flag)
  11.         rsort($arr);
  12.     else
  13.         sort($arr);
  14.     return $arr;
  15. }

  16. $arr = array(1, 2, 3, 4, 5, 5, 7, 9);
  17. $_arr = array(9, 6, 5, 2, 1);
  18. print_r(insert_new_val($arr, 6));
  19. print_r(insert_new_val($_arr, 7));
  20. ?>
复制代码
呵呵,流氓贴。第一题!

论坛徽章:
0
132 [报告]
发表于 2010-09-30 10:04 |只看该作者
6:写一个function实现数组内每个元素之间加法的递代运算?
注:数组元素全部为自然数.
有凑代码的嫌疑!
  1. <?php
  2. error_reporting(E_ALL);
  3. function comb($arr, &$res, $start) {
  4.     $head = 0;
  5.     $end  = count($arr) - 1;
  6.     if ($start > $end)
  7.         return;
  8.     if (!function_exists('alu')) {
  9.         function alu($val, $sub_arr, $i) {
  10.             if (!is_array($sub_arr)) {
  11.                 return FALSE;
  12.             }
  13.             $r = array();
  14.             foreach ($sub_arr as $sub_val) {
  15.                 $r[$i++] = $val + $sub_val;
  16.             }
  17.             return $r;
  18.         }
  19.     }
  20.     $res[] =alu($arr[$start], array_slice($arr, $start), $start);
  21.     $start++;
  22.     comb($arr, &$res, $start);
  23. }
  24. $arr = array(1, 2, 2, 3, 4, 6);
  25. $res = array();
  26. comb($arr, &$res, 0);
  27. print_r($res);
  28. ?>
复制代码
打出结果:
  1. Array
  2. (
  3.     [0] => Array
  4.         (
  5.             [0] => 2
  6.             [1] => 3
  7.             [2] => 3
  8.             [3] => 4
  9.             [4] => 5
  10.             [5] => 7
  11.         )

  12.     [1] => Array
  13.         (
  14.             [1] => 4
  15.             [2] => 4
  16.             [3] => 5
  17.             [4] => 6
  18.             [5] => 8
  19.         )

  20.     [2] => Array
  21.         (
  22.             [2] => 4
  23.             [3] => 5
  24.             [4] => 6
  25.             [5] => 8
  26.         )

  27.     [3] => Array
  28.         (
  29.             [3] => 6
  30.             [4] => 7
  31.             [5] => 9
  32.         )

  33.     [4] => Array
  34.         (
  35.             [4] => 8
  36.             [5] => 10
  37.         )

  38.     [5] => Array
  39.         (
  40.             [5] => 12
  41.         )

  42. )
复制代码

论坛徽章:
5
CU十周年纪念徽章
日期:2012-02-28 22:08:51CU大牛徽章
日期:2012-02-28 22:08:512010年中国数据库技术大会
日期:2012-02-28 22:05:302009年中国系统架构师大会
日期:2012-02-28 22:05:30ChinaUnix元老
日期:2012-02-28 22:26:02
133 [报告]
发表于 2010-09-30 11:46 |只看该作者
回复  fansekey

靠,刚才看到自己写的代码不符合题意。先鄙视一下……继续写!
fansekey 发表于 2010-09-29 21:01



    ,\没事,可以改嘛,呵呵

论坛徽章:
5
CU十周年纪念徽章
日期:2012-02-28 22:08:51CU大牛徽章
日期:2012-02-28 22:08:512010年中国数据库技术大会
日期:2012-02-28 22:05:302009年中国系统架构师大会
日期:2012-02-28 22:05:30ChinaUnix元老
日期:2012-02-28 22:26:02
134 [报告]
发表于 2010-09-30 11:47 |只看该作者
我也来做几道试试看。环境:Linux 2.6.32-24-generic #43-Ubuntu GNU/Linux
---------------------------- ...
rubylc_unix 发表于 2010-09-28 20:09



    强烈地欢迎啊,

论坛徽章:
5
CU十周年纪念徽章
日期:2012-02-28 22:08:51CU大牛徽章
日期:2012-02-28 22:08:512010年中国数据库技术大会
日期:2012-02-28 22:05:302009年中国系统架构师大会
日期:2012-02-28 22:05:30ChinaUnix元老
日期:2012-02-28 22:26:02
135 [报告]
发表于 2010-09-30 11:50 |只看该作者
奖品太廉价了。
jimnopq 发表于 2010-09-29 10:10



    本来就是娱乐+技术提高性质的。
  如果有厂商赞助了,就可以发个 几万的现金了,

论坛徽章:
0
136 [报告]
发表于 2010-09-30 19:42 |只看该作者
5:写一个二维数组排序函数,能够具有通用性
  1. function array_sort($arr, $keys, $order=0) {
  2. if (!is_array($arr)) {
  3. return false;
  4. }
  5. $keysvalue = array();
  6. foreach($arr as $key => $val) {
  7. $keysvalue[$key] = $val[$keys];
  8. }
  9. if($order == 0){
  10. asort($keysvalue);
  11. }else {
  12. arsort($keysvalue);
  13. }
  14. reset($keysvalue);
  15. foreach($keysvalue as $key => $vals) {
  16. $keysort[$key] = $key;
  17. }
  18. $new_array = array();
  19. foreach($keysort as $key => $val) {
  20. $new_array[$key] = $arr[$val];
  21. }
  22. return $new_array;
  23. }
复制代码

论坛徽章:
0
137 [报告]
发表于 2010-09-30 19:48 |只看该作者
4:使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组
  1. <?php
  2. //冒泡排序(一维数组)
  3. function bubble_sort($array)
  4. {
  5. $count = count($array);
  6. if ($count <= 0) return false;
  7. for($i=0; $i<$count; $i++)
  8. {
  9.    for($j=$count-1; $j>$i; $j--)
  10.    {
  11.     //如果后一个元素小于前一个,则调换位置
  12.     if ($array[$j] < $array[$j-1])
  13.     {
  14.      $tmp = $array[$j];
  15.      $array[$j] = $array[$j-1];
  16.      $array[$j-1] = $tmp;
  17.     }
  18.    }
  19. }
  20. return $array;
  21. }
  22. //使用实例
  23. $arr = array(49, 38, 65, 97, 76, 13, 27);
  24. $arr = bubble_sort($arr);
  25. print_r($arr);
  26. ?>
复制代码

论坛徽章:
0
138 [报告]
发表于 2010-09-30 19:54 |只看该作者
1:要求在一组数中,插入一个新数,并维护原来的排序方式不变
  1. <?php
  2. function insert_arr($arr,$number){
  3. $count = count($arr);
  4. //判断要插入的数是否大于等于数组中最大的数,如果大于等于,则插入数组末尾
  5. if($number>=max($arr)){
  6.    $arr[]= $number;
  7.    return $arr;
  8. }elseif($number<=min($arr)){//判断要插入的数是否小于等于数组中最大的数,如果小于等于,则插入数组头部
  9.    array_unshift($arr,$number);
  10.    return $arr;
  11. }else{
  12.    for($i=0;$i<$count;$i++){
  13.     //找到要插入的位置
  14.     if($arr[$i]>=$number){
  15.      $tmp = $arr[$i];
  16.      $arr[$i] = $number;
  17.      //把后面的数向后移一位
  18.      for($j=$i+1;$j<$count+1;$j++){
  19.       $tmp1 = $arr[$j];
  20.       $arr[$j] = $tmp;
  21.       $tmp = $tmp1;
  22.      }
  23.      return $arr;
  24.     }
  25.    }
  26.   
  27. }
  28. }
  29. $arr = array(1,5,7,8,9);
  30. var_dump(insert_arr($arr,0));
  31. ?>
复制代码

论坛徽章:
0
139 [报告]
发表于 2010-09-30 19:58 |只看该作者
2:用二分法在一个数组中查找你所需元素
  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <stdlib.h>

  4. int init(int a[],int n)
  5. {
  6. int i;
  7. srand(time(NULL));
  8. for(i=0;i<n;i++)
  9. a[i]=rand()%100+1;
  10. }
  11. void print(int a[],int n)
  12. {
  13.   int i;
  14.   for(i=0;i<n;i++)
  15.   {
  16.   if(i%10==0)
  17.   printf("\");
  18.   printf("%5d",a[i]);
  19.   }
  20.   printf("\");
  21. }
  22. void insert1(int a[],int n)
  23. {
  24.     int i,x,j;
  25.     for(i=1;i<n;i++)
  26.     {
  27.     x=a[i];
  28.     for(j=i-1;j>-1&&a[j]>x;j--)
  29.         a[j+1]=a[j];
  30.     a[j+1]=x;
  31.     }
  32. }
  33. int main()
  34. {
  35.     int x,a[10];
  36.     int s=0,r=9;
  37.     init(a,10);
  38.     insert1(a,10);
  39.     print(a,10);
  40.     printf("x=");
  41.     scanf("%d",&x);
  42.     void binsrch(int s,int r,int x);
  43.     binsrch(s,r,x);
  44.     getch();
  45. }
  46. void binsrch(int s,int r,int x)
  47. {
  48. int m;
  49. m=(s+r)/2;
  50. if(a[m]==x)
  51. {
  52. printf("%d是第%d个位置",x,m+1);
  53. }
  54. else if(x>a[m])
  55. binsrch(m+1,r,x);
  56. else if(x<a[m])
  57. binsrch(s,m-1,x);
  58. else
  59. exit(-1);
  60. }
复制代码

论坛徽章:
0
140 [报告]
发表于 2010-09-30 22:33 |只看该作者
3:打印一个杨辉三角
  1. <?php

  2. function print_triangle($rows) {
  3.     if (!function_exists('cb')) {
  4.         function cb($a, $b) {
  5.             if ($b == 0)
  6.                 return 1;
  7.             else
  8.                 return ($a / $b) * cb($a-1, $b-1);
  9.         }
  10.     }
  11.     $count = $rows;
  12.     $i = 1;
  13.     echo 1;
  14.     echo "\n";
  15.     while ( $i <= $rows) {
  16.         for ($j = 0; $j <= $i; $j++) {
  17.             echo cb($i, $j);
  18.             echo "  ";
  19.         }
  20.         echo "\n";
  21.         $i++;
  22.     }
  23. }

  24. print_r(print_triangle(10));
  25. ?>
复制代码
通项
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP