当前位置: 首页 > news >正文

php 基础算法(用*表示金字塔)通过hash 比較两个数组同样的数

    当作为一名php 程序猿,每天总与数据库打交道,做着最底层的程序猿的工作,開始着手研究一些算法,希望自己能在计算机的道路上走的更远。事实上我更喜欢管理,希望自己能作为一个卓越的管理者,但并不影响我对技术的追求。

      *

    ***
   *****
  *******
 *********

***********

上图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 ) );


相关文章:

  • sass带来的变革
  • QlikView ETL - 分隔字符串的方法 SubField
  • 微软职位内部推荐-Senior Development Lead
  • WSS(Windows Storage Server)2008R2使用指南(二)安装篇
  • javascript——DOM之元素的宽高
  • 【原创】开源Math.NET基础数学类库使用(08)C#进行数值积分
  • SQL Server 2008 R2 安全性专题(一):安全原则
  • the linux command line学习笔记之四
  • PS常见错误-无法完成请求,因为文件格式模块不能解析该文件
  • 多线程中sleep()、wait()方法等的区别
  • 转帖:改变。没有很宏大的目标没有关系,就从身边的小事开始,从最需要变化的地方开始,尽快。...
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • Java与iOS中的线程安全与线程同步
  • Ubuntu学习之路1
  • 开始写博客,第一次
  • 2017-08-04 前端日报
  • CentOS 7 防火墙操作
  • create-react-app项目添加less配置
  • emacs初体验
  • flutter的key在widget list的作用以及必要性
  • Git同步原始仓库到Fork仓库中
  • PhantomJS 安装
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • webpack入门学习手记(二)
  • win10下安装mysql5.7
  • 构建工具 - 收藏集 - 掘金
  • 普通函数和构造函数的区别
  • 实现菜单下拉伸展折叠效果demo
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 因为阿里,他们成了“杭漂”
  • 源码安装memcached和php memcache扩展
  • 再谈express与koa的对比
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​configparser --- 配置文件解析器​
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • #define用法
  • #laravel 通过手动安装依赖PHPExcel#
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (3)选择元素——(17)练习(Exercises)
  • (分布式缓存)Redis持久化
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)Windows2003安全设置/维护
  • *2 echo、printf、mkdir命令的应用
  • .Net CoreRabbitMQ消息存储可靠机制
  • .Net IOC框架入门之一 Unity
  • .net Signalr 使用笔记
  • .NET的数据绑定
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • @Autowired和@Resource的区别
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • [.net]官方水晶报表的使用以演示下载
  • [23] GaussianAvatars: Photorealistic Head Avatars with Rigged 3D Gaussians
  • [Android] Implementation vs API dependency