PHP 算法习题

<?php
/*
假设某人有100000现金。每经过一次路口需要进行一次交费。交费规则为当他现金大于50000时每次需要交5%,如果现金小于等于50000时每次交5000。请写一程序计算此人可以经过该路口多少次。
*/
$money = 100000;

for($i=0;$money>=5000;$i++){
if($money>=50000){
$money=$money-$money*0.05;
}else if($money>=5000){
$money -= 5000;
}
}

echo ‘This guy can go ‘,$i,‘ times<br />‘;

/*
百元买百鸡
公鸡一只 5块;
母鸡一只 3块;
小鸡三只 1块。
现在100块买了100只鸡,问这100只鸡中,公鸡、母鸡、小鸡各多少只?
*/

for($g=0;$g<20;$g++){
for($m=0;$m<34;$m++){
for($x=0;$x<100;$x++){
if($g+$m+$x==100 && $g*5+$m*3+$x*1/3==100){
echo ‘GongJi : ‘,$g,‘ ‘,‘MuJi : ‘,$m,‘ ‘,‘XiaoJi : ‘,$x,‘<br />‘;
}
}
}
}

/* 优化代码 */
for($g=0;$g<20;$g++){
for($m=0;$m<34;$m++){

$x=100-$g-$m;

if($g*5+$m*3+$x/3==100){
echo ‘GongJi : ‘,$g,‘ ‘,‘MuJi : ‘,$m,‘ ‘,‘XiaoJi : ‘,$x,‘<br />‘;
}

}
}

?>

时间: 2024-10-19 21:52:54

PHP 算法习题的相关文章

2015/10/13 算法习题:最大子列和问题

已经正式开始学习数据结构和算法,先学了网易云课堂上的浙江大学的数据结构课,是陈越和何钦铭上的,了解了什么是数据结构和算法后,学习了一些时间空间复杂度分析的技巧,结合之前马虎掌握的学习,先从简单的题目入手学习. 题目是这样的: 给定了一个n个整数组成的序列,求它各个子列中,子列和最大的值. 输入:输入n个整数组成的序列 要求输出最大子列和. 示例: 输入: -2 11 -4 13 -5 -2 输出: 20 做出这题的难度不是很大,至少很容易可以做到暴力求解,然而暴力求解的时间复杂度是很大的. 我用

排序算法习题汇总

1.冒泡排序 对于一个int数组,请编写一个冒泡排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组. 测试样例: [1,2,3,5,2,3],6 [1,2,2,3,3,5] class BubbleSort { public: int* bubbleSort(int* A, int n) { // write code here for(int i=0;i<n-1;i++){ int k=0; for(int j=0;j<n-i-1;j++){ if(A[j]&

算法习题---线性表之单链表逆序打印

一:题目 逆序打印单链表中的数据,假设指针指向单链表的开始结点 二:思路 1.可以使用递归方法,来进行数据打印 2.可以借助数组空间,获取长度,逆序打印数组 3.若是可以,对链表数据使用头插法,逆序排列,然后正序打印即可 三:算法实现(这里使用方法一:递归实现简单易懂) #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #define MAXSIZE 10 #define OK 1 #def

算法习题---线性表之单链表的查找

一:问题 已知一个带头结点的单链表,结点结构为(data,link)假设该链表只给出了头指针list,在不改变链表的前提下,设计一个尽可能高效的算法,查找链表中倒数第k个位置上的结点(k为正整数),若查找成功,算法输出该结点的data域的值,并返回1,否则,只返回0. 注意: 这里的链表中没有给出链表长度哟 二:思路 设置两个指针p.q,分别指向该链表的第一个元素(头结点的下一个元素)和头结点,一个整数num(初值为1),p向后移动一个位置num值加1,如果num值大于k,则p,q一起移动,p移

算法习题---线性表之数组实现循环移动

一:问题 设将n(n>1)个整数存放到一维数组R中,试设计一个在时间和空间两方面都尽可能高效的算法,将R中保存的序列循环左移p(0<p<n)个位置,即把R中的数据序列由(x0,x1,…,xn-1)变换为(xp,xp+1,…,xn-1,x0,x1,…,x). 二:思考 要实现R中序列循环左移P个位置,只需先将R中前P个元素逆置,再将剩下的元素逆置,最后将R中所有的元素再整体做一次逆置操作即可,本题算法描述如下: (一)步骤一:将前P个元素逆置 (二)步骤二:将后P个元素逆置 (三)步骤三:

算法习题---字符串的全排序列

一:什么是全排列 排列:从n个元素中任取m个元素,并按照一定的顺序进行排列,称为排列: 全排列:当n==m时,称为全排列: 比如:集合{ 1,2,3}的全排列为: { 1 2 3} { 1 3 2 } { 2 1 3 } { 2 3 1 } { 3 2 1 } { 3 1 2 } 我们可以将这个排列问题画成图形表示,即排列枚举树,比如下图为{1,2,3}的排列枚举树,此树和我们这里介绍的算法完全一致: 二:全排列实现思路 (1)n个元素的全排列=(n-1个元素的全排列)+(另一个元素作为前缀):

算法习题分类

My Travel Of Acm! 早早的结束了考试,最近任务不是那么重,就花点时间整理了一下大二上学期学习过的一些算法 --2019-01-06 分类 知识清单 数据结构 树状数组 STL 差分数组 树链剖分 图论 图的连通性问题 2-SAT LCA 字符串 AC自动机 KMP 动态规划 动态规划(基础)       原文地址:https://www.cnblogs.com/violet-acmer/p/10228028.html

算法习题——选择题

1.关于算法的说法中正确的有(C). Ⅰ.求解某一类问题的算法是唯一的(如:冒泡排序可以用:穷举法.递归) Ⅱ.算法必须在有限步操作之后停止 Ⅲ.算法的每一步操作必须是明确的,不能有歧义或含义模糊 Ⅳ.算法执行后一定产生确定的结果 A.1个           B.2个           C.3个           D.4个 算法设计的目标: (1)正确性:正确地执行预先规定的功能和性能要求. (2)可使用性(用户友好性):可以很方便地使用. (3)可读性:易于理解. (4)健壮性:提供异常

一个算法习题学习的好去处-有不同语言的实现

这不是个人传销,而是在学习过程中发现的一个比较好的地方,因此向大家推荐一下,希望能有所帮助- 虽然只有一个链接,但是这个链接的重量就在那里,不知道能发向首页不?? 为了凑字数,下面给出了一篇在上述网站中的一个题目解析: ------------------------------ 链接地址:http://openhome.cc/Gossip/AlgorithmGossip/MathPI.htm From [email protected] Algorithm Gossip: 蒙地卡羅法求 PI