PHP的算法可以说也是非常强大的, 有人说学PHP等编程语言的,一定要思维逻辑好,那下面这道题程序员大神们都来瞧瞧吧!有5个人偷了一堆苹果,准备在第二天分赃。晚上,有一人遛出来,把所有菜果分成5份,但是多了一个,顺手把这个扔给树上的猴了,自己先拿1/5藏了。没想到其他四人也都是这么想的,都如第一个人一样分成5份把多的那一个扔给了猴,偷走了1/5。第二天,大家分赃,也是分成5份多一个扔给猴了。最后一人分了一份。问:共...
字符串逆序函数如何去写?题目内容,写一个函数,要求能够逆序打印字符串的内容。
void run(char * str) {int len = strlen(str);char* left = str;char* right = str + len - 1;while (left<right) {char tmp = *left;*left = *right;*right = tmp;left++;right--;
}
}
int main() {char arr[100] = { 0 };scanf("%s\n", arr);run(arr);printf("%s\n", arr);return 0;
}
第二题计算a+aa+aaa+aaaa+aaaaa的前五项之和,其中a是一个数...
题:一群猴子排成一圈,按1,2,3,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈。继续从它后面一位再开始数,数到第m只,再把它踢出去…。如此不停的进行下去,直到最后只剩下一只猴子为止。要求编程模拟此过程,任意输入m、n值,输出最后那一只猴子的编号。
function getMonkeyNumber($n, $m){ $monkeys = range(1, $n); //创建1到n的一维数组 $i=0; while (count($monkeys)>1) { ...
有5个人偷了一堆苹果,准备在第二天分赃。晚上,有一人遛出来,把所有菜果分成5份,但是多了一个,顺手把这个扔给树上的猴了,自己先拿1/5藏了。没想到其他四人也都是这么想的,都如第一个人一样分成5份把多的那一个扔给了猴,偷走了1/5。第二天,大家分赃,也是分成5份多一个扔给猴了。最后一人分了一份。问:共有多少苹果??
for ($i = 1; ; $i++)
{
if ($i%5 == 1) {
//第一个人取五分之一,还剩$t
$t = $i...
“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?
Java版import java.io.BufferedInputStream;
im...
30.Algorithm Gossip: m 元素集合的n 个元素子集
说明
假设有个集合拥有m个元素,任意的从集合中取出n个元素,则这n个元素所形成的可能子集有那些?
解法
假设有5个元素的集点,取出3个元素的可能子集如下:
{1 2 3}、{1 2 4 }、{1 2 5}、{1 3 4}、{1 3 5}、{1 4 5}、{2 3 4}、{2 3 5}、{2 4 5}、
{3 4 5}这些子集已经使用字典顺序排列,如此才可以观察出一些规则: 如果最右一个元素小于m,则如同码表一样的不断加1
如果右边一位已...
19.Algorithm Gossip: 完美数
说明
如果有一数n,其真因数(Proper factor)的总和等于n,则称之为完美数(Perfect Number), 例如以下几个数都是完美数:
6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14
496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248
程式基本上不难,第一眼看到时会想到使用回圈求出所有真因数,再进一步求因数和,不过若n 值很大,则此法会花费许多时间在回圈测试上,十分没有效率,例如求小于10000的所有完美数 。...
9.Algorithm Gossip: 八枚银币
说明
现有八枚银币a b c d e f g h,已知其中一枚是假币,其重量不同于真币,但不知是较轻或较重,如何使用天平以最少的比较次数,决定出哪枚是假币,并得知假币比真币较轻或较重。
解法
单就求假币的问题是不难,但问题限制使用最少的比较次数,所以我们不能以单纯的回圈比较来求解,我们可以使用决策树(decision tree),使用分析与树状图来协助求解。一个简单的状况是这样的,我们比较a+b+c与d+e...
JAVA经典算法题【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... public class exp2{public static void main(String args[]){int i=0;for(i=1;i<=20;i++)System.out.println(f(i));}public static int f(int x){if(x==1 || x==2)return 1;elseretu...
1. Java 的 16 进制与字符串的相互转换函数
/*** 将指定 byte 数组以 16 进制的形式打印到控制台* @param hint String* @param b byte[]* @return void
*/
public static void printHexString(String hint, byte[] b) {System.out.print(hint);for (int i = 0; i < b.length; i++) {String hex = Integer.toHexString(b[i] & 0xFF);if (hex.length() == 1) {hex = '0' + hex;}System.out.print(hex.toUpperCase() + " ");}System.o...
问题描述
题目描述
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.
假设输入的前序遍历和中序遍历的结果中都不含重复的数字
例:
前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}
方法原型
public TreeNode reConstructBinaryTree(int [] pre,int [] in)
class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) { val = x; }
}
解题思路
手工还原
虽然本题是一道编程题,但是也经常以填...
目录
问题描述
第一种解法:排序+遍历
第二种解法:空间换时间
第三种解法:优化空间
问题描述
题目描述
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字
要求
时间限制:1秒
空间限制:32768K
方法原型
public boolean duplicate(int numbers[],int length,int [] duplication)
返回值说明:如果输入有效,并且...
原文链接:https://blog.csdn.net/yupu56/article/details/90904282面试经典算法题--爬楼梯 的六种解法
题目描述:
假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?
六种解法:
/*** 爬楼梯问题其实质就是斐波那契数列!*/
public class ClimbTheStairs {int total;
// 1.递归调用
public int fib01(int n) {if (n == 1 || n == 2)total = n;elsetotal = fib01(n - 2) ...
在经典算法题之(六)------ 二维数组迷宫问题中列举了很多种情况,从条件放宽到可以任意走开始,就成了图的最短路径问题,一旦涉及到图的最短路径,则一定会用到DFS和BFS(能手写Dijkstra的话当我没说。。)。而这种两种思想在解决图的问题时也特别普遍,实际上,在二叉树的很多问题中也同样要用到这两种方法,特别是DFS,因为二叉树的三中遍历方法从本质上来说就是DFS,只是访问节点的位置(在递归之前还是中间还是之后)不同。
...