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 ) );
php 基础算法(用*表示金字塔)通过hash 比較两个数组同样的数的更多相关文章
- 10个经典的C语言面试基础算法及代码
10个经典的C语言面试基础算法及代码作者:码农网 – 小峰 原文地址:http://www.codeceo.com/article/10-c-interview-algorithm.html 算法是一 ...
- 海量数据挖掘MMDS week2: 频繁项集挖掘 Apriori算法的改进:基于hash的方法
http://blog.csdn.net/pipisorry/article/details/48901217 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...
- C语言的10大基础算法
C语言的10大基础算法 算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手.本文包括了经典的Fibonacci数列.简易 ...
- PHP基础算法
1.首先来画个菱形玩玩,很多人学C时在书上都画过,咱们用PHP画下,画了一半. 思路:多少行for一次,然后在里面空格和星号for一次. <?php for($i=0;$i<=3;$i++ ...
- Java基础算法集50题
最近因为要准备实习,还有一个蓝桥杯的编程比赛,所以准备加强一下算法这块,然后百度了一下java基础算法,看到的都是那50套题,那就花了差不多三个晚自习的时间吧,大体看了一遍,做了其中的27道题,有一些 ...
- 海量数据挖掘MMDS week2: 频繁项集挖掘 Apriori算法的改进:非hash方法
http://blog.csdn.net/pipisorry/article/details/48914067 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...
- 贝叶斯公式由浅入深大讲解—AI基础算法入门
1 贝叶斯方法 长久以来,人们对一件事情发生或不发生的概率,只有固定的0和1,即要么发生,要么不发生,从来不会去考虑某件事情发生的概率有多大,不发生的概率又是多大.而且概率虽然未知,但最起码是一个确定 ...
- python_基础算法
本篇主要实现九(八)大排序算法,分别是冒泡排序,插入排序,选择排序,希尔排序,归并排序,快速排序,堆排序,计数排序.希望大家回顾知识的时候也能从我的这篇文章得到帮助. 概述 十种常见排序算法可以分为两 ...
- 贝叶斯公式由浅入深大讲解—AI基础算法入门【转】
本文转载自:https://www.cnblogs.com/zhoulujun/p/8893393.html 1 贝叶斯方法 长久以来,人们对一件事情发生或不发生的概率,只有固定的0和1,即要么发生, ...
随机推荐
- OpenCVR 有新成员 OpenCVV OpenCVC
OpenCVC主要负责OpenCVR报名, OpenCVV支持Android IOS Mac Windows 的client 版权声明:本文博客原创文章,博客,未经同意,不得转载.
- android代码集EditText只要输入号码、信
如何设置EditText,因此,只有某些数字或字母可以进入它? 一.建立EditText,只要输入号码: 办法1:直接生成DigitsKeyListener了. et_1.setKeyListe ...
- Linux管道通信
1.Linux内部自己实现了管道的同步,但多个读或者多个写之间的互斥,还需要自己实现.
- Unicode字段也有collation
原文:Unicode字段也有collation 转自:http://blogs.msdn.com/b/apgcdsd/archive/2011/01/11/unicode-collation.aspx ...
- 移动端 rem字体的使用demo
<!doctype html> <html> <head> <meta charset="utf-8"> <title ...
- Team Foundation Server 2015使用教程--团队项目创建
- 使用python+flask让你自己api(教程源代码)
1.背景 ok,这可能是很多朋友和我一样经常使用的各种api,例facebook的.github的.甚至微信api.因此,很多人都想使自己的api.在线教程在这方面它是非常小的,今天,我做了一个平稳, ...
- cocos2dx 3.x Value、Vector和Map意识
1. Value cocos2d::Value 这包括一个非常大的数字原生类型(int,float,double,bool,unsigned char,char* 和 std::string)外 加s ...
- oracle_单向函数_数字化功能
oracle_单向函数_数字化功能 1.abs(x) 为了获得x绝对值 2.ceil(x) 用于获得大于或等于x的最小整数. 3.floor(x) 用于获得小于或等于x 4.mod(x,y ...
- Scala刮:使用Intellij IDEA写hello world
介绍 在前面的文章中,,我们介绍了如何使用Scala IDE那是,eclipse集成Scala开发插件Scala开发语言程序.使用一段时间后,.发现eclipse正确Scala支持不是很好.用户体验差 ...