//查找任意一个i,使得arr[i]等于v,不存在返回-1 int bsearch_any_i(int arr[],int l,int r,int v){ int left=l,right=r; while(left&l…
分类:编程之美
编程之美读书笔记3.2—电话号码对应英语单词
1. 简述 电话的号码盘一般可以用于输入字母。如用2可以输入A、B、C,用3可以输入D、E、F等。 对于号码5869872,可以依次输出其代表的…
编程之美2.11
// Test.cpp : Defines the entry point for the console application. // #include <vector> #include<time…
[编程之美]快速寻找满足条件的两个数
在《编程之美》一书的第2.12个题目描述如下: 能否快速找出一个数组中的两个数字,让这个两个数字之和等于一个给定的值,为了简化起见,我们假设这个数组中肯定至少存在一组满足要求的解。 作者给出了3种方案: [方案一]穷举法…
编程之美--最大公约数问题
1、题目:求两个正整数的最大公约数,如果两个正整数都很大,有什么简单的算法吗? 解法一:辗转相除法。 int gcd(int x, int y) { return (!y) ? x : gcd(y, x%y); } 解法…
编程之美-1.3-烙饼排序问题
问题描述: 烙饼问题可以简化为对一段由n个无重复的整数组成的无序数组a[n]进行排序。排序要求每次只能对a[0]~a[i]部分的数组进行翻转(0 < i < n),最终完成排序。 输入:数组大小n;n个整数。…
来自《编程之美》的概率题:一个桶里面有白球、黑球各100个,现在按下述规则取球
题目:有一个桶,里面有白球、黑球各100个,人们必须按照以下的规则把球取出来: 1、每次从桶里面拿出来两个球; 2、如果是两个同色的球,就再放入一个黑球; 3、如果是两个异色的球,就再放入一个白球; 问:最后桶里面只剩下…
编程之美----链表相交问题
1 判断两个链表是否相交(假设两个链表均不带环) 有四种方法: 解法1:直观的想法 判断第一个链表的每个节点是否在第二个链表中,这种方法的时间复杂度为O(length(h1)*length(h2)) 解法2:利用计数的方…
微软2014编程之美初赛第一场——题目2 : 树
【来源】 题目2 : 树 【分析】 根据输入情况建立起树的模型。树的表示是一个表明父亲节点的数组。核心算法有两个: 计算某一节点的深度。用循环实现,一直向上找父亲节点,直到找到根节点。计算循环的次数即为深度。 计算某一节…
编程之美 一排石头的游戏(拓展问题)
转自http://arieshout.me/2012/04/nim-problem.html 《编程之美》一书中1.11章节介绍了NIM游戏的取胜问题。N块石头排成一行,每块石头有各自固定的位置。两个玩家依次取石头,每个…
编程之美 3.11二分查找系列
题目1:找出一个有序字符串数组arr中值等于字符串v的元素的序号,如果有多个元素满足这个条件,返回序号最大的 这里和最基本的二分查找不一样的地方,二分查找,找到一个就可以返回,这里找到了还得继续往后走,找最大的 int …
编程之美 - 1.3 翻烙饼 书中代码可运行版 ,看懂了没自己写
/****************************************************************/ // // 烙饼排序实现 // /**************************…