打印一个杨辉三角
2011-07-20 22:59
211 查看
打印一个杨辉三角
本文出自 “一方有” 博客,请务必保留此出处http://yifangyou.blog.51cto.com/900206/618825
<?php /* *3:打印一个杨辉三角 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 *系统环境:windows/linux *编译环境:php4/php5 *输入参数:存放在in.txt,多个参数时空格分隔 参数1,打印的层数,整数 输出:out.txt */ $params=getParams(1); $argv0=trim($params[0]); //检查参数1 if(!is_numeric($argv0)) { error_msg("params 1 must be a numbers"); } //输出结果 //output("'$argv1' index is:".$item_index); //输出数字宽度 $spaceNumber=6; $maxn=$argv0; //清空输出文件 output("",true); get_trangle($argv0); error_msg("execute success"); /* 递归打印杨辉三角各层数据 0层 1 1层 1 2层 1 1 n层时: $n层[0]=$n-1层[0],$n层[1]=$n-1层[0]+$n-1层[1],$n层[2]=$n-1层[1]+$n-1层[2] */ function get_trangle($n){ if($n <= 0) { //递归结束 return false; } if($n==1) { $this_level=array(1); print_line($this_level,$n); return array(1); } if($n==2) { $this_level=array(1,1); print_line(array(1),1); print_line($this_level,$n); return $this_level; } $last_level=get_trangle($n-1); if(!is_array($last_level)||count($last_level) < 2) { //递归结束 return false; } $this_level=array(); $this_level[0]=1; //$n层[1]=$n-1层[0]+$n-1层[1] for($i=0;$i< count($last_level)-1;$i++) { $this_level[$i+1]=$last_level[$i]+$last_level[$i+1]; } $this_level[]=1; print_line($this_level,$n); return $this_level; } function print_line($aArray,$n) { global $maxn,$spaceNumber; $line=sprintf("%".(($maxn-$n)*$spaceNumber/2)."s",""); foreach($aArray as $i) { $line.=sprintf("%".$spaceNumber."s",$i); } output($line); } /* 从in.txt里读取参数 */ function getParams($paramNum) { $in=file_get_contents("in.txt"); if($in===FALSE){ error_msg("cannot read in.txt,please check in.txt exists\n"); } $in=preg_replace("/(\s+)/i", " ", $in); //多个参数时,按照空格分隔 $parms=split(" ",trim($in)); if($parms===FALSE) { error_msg("cannot get param from in.txt\n"); } if(count($parms) < $paramNum) { error_msg("it needs $paramNum params\n"); } return $parms; } /* 把结果输出到输出文件里 当isClean=true时清空out.txt */ function output($msg,$isClean=false) { if($isClean) { $handle = fopen('out.txt', 'w'); fclose($handle); } error_log($msg."\n", 3, "out.txt"); } /* 输入错误信息 如果$is_exit表示输入信息后退出 */ function error_msg($msg,$is_exit=true) { if($is_exit) die($msg."\n"); else echo $msg."\n"; } ?>
本文出自 “一方有” 博客,请务必保留此出处http://yifangyou.blog.51cto.com/900206/618825
相关文章推荐
- 用Java学写了一个“打印输出杨辉三角的函数”,请批评
- 杨辉三角(打印一个等腰、直角三角形)
- 打印一个杨辉三角
- 杨辉三角(打印一个等腰、直角三角形)
- 使用二维数组打印一个 10 行杨辉三角.
- 编写一个程序,在屏幕上打印杨辉三角
- 只用一个一维数组打印杨辉三角
- 打印一个菱形(C语言)
- 给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
- 基础笔试题:编程实现一个单链表的建立、测长、打印
- C++编写利用数据结构中队列(Queue)打印出用户所指定长度的杨辉三角
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
- 如何用一个for循环打印出一个二维数组
- 用Python输出一个杨辉三角的例子
- 教你分分钟开发一个属于自己的python模块(一)——能够直接在浏览器打印的方法
- 队列应用之打印杨辉三角_legend
- 教你分分钟开发一个属于自己的python模块(一)——能够直接在浏览器打印的方法
- 实现一个命令行linux终端应用程序,把输入的指定文件,映射到内存中,并打印出文件内容
- Win7中添加打印目录打印一个文件夹中的所有目录
- 一个PHP打印方法