php 基础算法(用*表示金字塔)通过hash 比较两个数组相同的数
2014-07-16 00:47
671 查看
当作为一名php 程序员,每天总与数据库打交道,做着最底层的程序员的工作,开始着手研究一些算法,希望自己能在计算机的道路上走的更远。其实我更喜欢管理,希望自己能作为一个卓越的管理者,但并不影响我对技术的追求。
*
***
*****
*******
*********
***********
上图php代码如下
二.用PHP 写杨辉三角。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
如上图 :
简单思路:
1.首先杨辉三角初始模型应该如下图
1
1 1
1 1 1
1 1 1 1
1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
上图的形式应该很好表示的,根据菱形的特定去考虑。两个for 循环就搞定了。
由因为向数组,把它存在数组里,在显示出来,就可以了。
*
***
*****
*******
*********
***********
上图php代码如下
<?php for($i=1;$i<=6;$i++){ for($z=5;$z>=$i;$z--){ echo " "; } for($j=1;$j<=2*$i-1;$j++){ echo "*"; } echo "<br/>"; }
二.用PHP 写杨辉三角。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
如上图 :
<?php for($i = 0; $i < 10; $i ++) { for($z = 9; $z >= $i; $z --) { echo " "; } for($j = 0; $j <= $i; $j ++) { if($j==0 || $j==$i){ $newarray[$i][$j]=1; }else{ $newarray[$i][$j]=$newarray[$i-1][$j]+$newarray[$i-1][$j-1]; } echo $newarray[$i][$j]." "; } echo "<br/>"; }
简单思路:
1.首先杨辉三角初始模型应该如下图
1
1 1
1 1 1
1 1 1 1
1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
上图的形式应该很好表示的,根据菱形的特定去考虑。两个for 循环就搞定了。
由因为向数组,把它存在数组里,在显示出来,就可以了。
<?php /** * @author lxy * 在一组数中,要求插入一个数,按其原来顺序插入,维护原来排序方式。 * 首先需要说明的是用户给定的数组是要有一定顺序的。如升序或降序 * 不能用排序函数如sort等 */ class insertvalue { private function __construct() { } /** * 判断是升序还是降序 * 因为数组是有顺序的所以可以这样处理 * 但是要保证键名必须从 0 开始 * 保证数组数据没有重复的值, */ private static function judgesort($array) { $flg = ''; $countarray = count ( $array ); $newarray = array_unique ( $array ); $newarray = array_values ( $newarray ); // 保证键值都是从0,1,2开始的 $n = count ( $newarray ); if (count ( $newarray ) == 1) { $flg = 0; } else { for($i = 0; $i < $n; $i ++) { if ($newarray [$i] < $newarray [$i + 1]) { $flg = 1; break; } else { $flg = - 1; break; } } } return $flg; } /** * 插入元素 */ private static function insertvalue($val, $array) { $flg = self::judgesort ( $array ); $n = count ( $array ); // 升序 if ($flg == 1) { if ($val > $array [count ( $array ) - 1]) { $array [count ( $array ) + 1] = $val; return $array; } for($i = 0; $i < $n; $i ++) { if ($array [$i] >= $val) { $t1 = $array [$i]; $array [$i] = $val; for($j = $i + 1; $j <= $n; $j ++) { $t2 = $array [$j]; $array [$j] = $t1; $t1 = $t2; } return $array; } } } // 降序 if ($flg == - 1) { if ($val <= $array [$n - 1]) { $array [$n] = $val; return $array; } for($i = 0; $i < $n; $i ++) { if ($val >= $array [$i]) { $t3 = $array [$i]; $array [$i] = $val; for($j = $i + 1; $j <= $n; $j ++) { $t4 = $array [$j]; $array [$j] = $t3; $t3 = $t4; } return $array; } } } if ($flg == 0) { $array [$n] = $val; return $array; } } /** * 入口文件 */ public static function main($val, $array) { $newarray = insertvalue::insertvalue ( $val, $array ); return $newarray; } } $a = 6; $array = array ( 1, 1, 1, 1, 1, 9 ); $newarray = insertvalue::main ( $a, $array ); var_dump ( $newarray );
<?php /** *通过hash 比较两个数组相同的数 */ $arr=array(a,b,c,d,f); $towarr=array(a,c,d); $same=array(); $newarray=array(); foreach($arr as $val){ $newarray[$val]=1; } foreach ($towarr as $value){ if($newarray[$value]==1){ $same[]=$value; } }
<?php /** * 合并多个数组,不用array_merge(),题目来于论坛。 */ header("Content-type:text/html;charset='utf-8'"); function conjunctionarray() { $newarray = array (); $num = func_num_args (); //函数参数的个数 $valarray = func_get_args (); //参数列表 for($i = 0; $i < $num; $i ++) { if (is_array ( $valarray [$i] )) { $newarray [] = $valarray [$i]; } else { exit ( $valarray [$i] . '不是数组' ); } } return $newarray; } $a = array ( 1, 2, 3 ); $b = array(3); print_r ( conjunctionarray ( $a, $b ) );
相关文章推荐
- php 基础算法(用*表示金字塔)通过hash 比較两个数组同样的数
- php获取两个数组相同的元素(交集)以及比较两个数组中不同的元素(差集)
- php比较两个数组是否相同
- git是一种分布式代码管理工具,git通过树的形式记录文件的更改历史,比如: base'<--base<--A<--A' ^ | --- B<--B' 小米工程师常常需要寻找两个分支最近的分割点,即base.假设git 树是多叉树,请实现一个算法,计算git树上任意两点的最近分割点。 (假设git树节点数为n,用邻接矩阵的形式表示git树:字符串数组matrix包含n个字符串,每个字符串由字符'0
- php中比较两个数组内容,相同部分保留,不同的加上
- php 比较获取两个数组相同和不同元素(交集和差集)
- php比较两个二维数组是否相同,多维数组
- C# 比较两个数组中的内容是否相同的算法
- php中通过数组进行高效随机抽取指定条记录的算法
- php判断比较两个数组中的数据
- 从“比较两个含有多个不同元素的集合是否相同”引申出的几种算法
- PHP 如何快速比较两个字符串中字符完全相同?
- 比较两个string类型数组(String[ ])是否相同
- PHP分割两个数组的相同元素和不同元素的两种方法
- 算法系列-两个有序数组中相同的数字
- php 查询两个数组中值相同的元素(并且去掉重复值)
- 比较两个有序数组中是否有相同数字
- PHP中获取我的城市列表,通过排序,通过A-Z的循环!数列出相同的首字母结果!,放到一个以A-Z为key的数组里面去,再返回我要的结果!
- 请教一个算法问题,有两个数组A,B,判断A中是否至少有一个元素和B中元素相同
- 基础算法之三: 合并两个有序数组