
编程题
wyj880220
这个作者很懒,什么都没留下…
展开
-
每天一道编程题(四)--------冒泡排序
在写冒泡的时候遇到了一个问题,就是值传递问题,我写的是swap函数,本来只传两个数值是不可以的例如swap(int a,int b)这样只是单纯的值传递,并不能起到交换两个数值的作用,所以要直接对数组进行操作才是王道。想起C++中其实是按指针给值,直接修改堆里的值,而java里没有指针,所以要将“引用”传进来,我不知道用引用合不合适,但是这个引用和C++中的引用是有很大区别的,我觉得反而有点类似于原创 2012-02-20 18:53:15 · 695 阅读 · 0 评论 -
每天一道编程题(十)---------java竞赛称砝码问题
用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。如果只有5个砝码,重量分别是1,3,9,27,81。则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中)。本题目要求编程实现:对用户给定的重量,给出砝码组合方案。例如:用户输入:5程序输出:9-3-1用户输入:19程序输出:27-9+1输入:41输出:81-27-9原创 2012-04-11 17:42:00 · 2526 阅读 · 0 评论 -
每天一道编程题(九)----------堆排序
首先来描述一下堆这种数据结构,我们现在所说的堆一般就是指二叉堆,所以下面我就统一把堆默认为二叉堆。堆是一棵被完全填满的二叉树,设树的高度为h,即从第1层到第h-1层,树的节点都是被填满的,唯一有例外的就是在底层,若果底层是被从左到右被填满的,那这就是一棵完全二叉树。我们也可以用满树的概念来定义完全二叉树:完全二叉树是一棵与满树从左到右一一对应的树。堆排序是不稳定的排序算法,空间复杂度为O(1),时原创 2012-03-20 11:36:04 · 845 阅读 · 0 评论 -
每天一道编程题----------------辗转相除法求两个数的最大公约数及其证明
证明方法为转载: 设两数为a、b(a>b),b最大公约数(a,b)的步骤如下:用b除a,得a=bq......r1(0≤r1)。若r1=0,则(a,b)=b;若r1≠0,则再用r1除b,得b=r1q......r2 (0≤r2).若r2=0,则(a,b)=r1,若r2≠0,则继续用r2除r1,……如此下去,直到能整除为止。其最后一个非零除数即为(a,b)。 原理及其详细证明原创 2012-02-27 21:07:28 · 2101 阅读 · 0 评论 -
每天一道编程题------------百度蚂蚁爬杆问题
有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。 木杆很细,不能同时通过一只蚂蚁。开始 时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头, 但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。 编写程序,求所有蚂蚁都离开木杆 的最小时间和最大时间。 看到这道题感觉可以将前几天遇到原创 2012-03-12 11:14:25 · 3501 阅读 · 0 评论 -
每天一道编程题------------------将一个句子中单词编程倒序
百度公司面试题,要求空间复杂度最小,希望各位有更好地解答......................../*** 要求:将一个英文句子反转* 但不能使用String的库函数:split,indexOf,lastIndexOf,subString且要求空间复杂度最小* * */public class Reverse { public static void main(Stri原创 2012-03-07 11:18:59 · 1499 阅读 · 0 评论 -
每天一道编程题(一)----24点游戏
今天看了一道面试编程的关于24点游戏的,自己想了想,就写了以下的java代码,时间复杂度比较高,暂时还没有想到太好的方法,希望有人能提出更好地方法。原题是让随机生成4个数,这四个数大于1小于14,然后计算其能否凑成24点。并输出每个数和方法。源代码如下:public class Test24Point { public static float operate(float r1,floa原创 2012-02-17 16:38:48 · 2048 阅读 · 0 评论 -
每天一道编程题----------------淘宝小白鼠喝药问题
有1000只瓶药水,其中至多有一瓶为毒药,有十只小白鼠,小白鼠喝药后20小时才能知道是否为毒药,问给你24小时,你怎样才能检验出哪一瓶是毒药。明天继续问题的编程....今天先写题目。转载 2012-02-27 21:05:11 · 1154 阅读 · 0 评论 -
每天一道编程题(八)--------百钱买百鸡
同学面试的时候问了一道百钱买百鸡问题,后来有面试淘宝的又问到了一个小马过河的问题,非常的类似,先来描述一下两个问题的题意。(1)有100块钱要买100只鸡,其中公鸡5块钱一只,母鸡3块钱一只,小鸡一块钱3只,问怎样买才可以?(2)小马过河问题,有100只马要背100担粮食,其中大马一批背三担,中马一批背两担,小马两匹背一担,问怎么背? 起初拿到这种题目,想这出题人有问题吧,一个原创 2012-02-24 17:29:39 · 2613 阅读 · 2 评论 -
每天一道编程题(七)------------------快速排序
快速排序是将要排序的集合A,进行分块排序。一般步骤为:1.如果A中的元素个数是0或1,则返回。2.A中的任意元素为pivot(中心元素【个人理解】)3.将A按照中心元素划分为两部分A1和A2 4.对A1和A2分别进行如上操作。其实是一个递归的过程。如何选取中心元素会影响到快速排序的速度,本次算法采用最普遍的将数组中的第一个元素作为pivotpublic class QuickSort {原创 2012-02-23 11:22:46 · 694 阅读 · 0 评论 -
每天一道编程题(六)-------希尔排序
希尔排序的主题思想其实就是分治,各个小模块之间执行插入排序,写起来也很简单,我以两种插入排序做了希尔排序,只是多了一个分治的for循环public class ShellSort { public static void shellsort(int[] nums){ for(int increase=(nums.length/2);increase>0;increase/=2){原创 2012-02-21 19:26:12 · 609 阅读 · 0 评论 -
每天一道编程题(二)------求字符串中个数最多的字符串的个数,并打印
给定一个字符串,找出其中相同字符的个数,打印出最多的字符串。一个字符串中可能包含a~z中的多个字符,如有重复,如Stringdata="aavzcadfdsfsdhshgWasdfasdf",求出现次数最多的那个字母及次数,如有多个重复的则都求出。〔金山公司面试题〕(起初做这道题的时候存储在数组里,来实习公司,一老大说,一般这种求字符串的题目而且在java中一般是考你集合的知识,后来一看网上的原创 2012-02-17 18:48:09 · 3258 阅读 · 0 评论 -
每天一道编程题(三)------插入排序
今天看了很多排序问题,准备一天搞定一个,今天是插入排序public class InsertionSort {public static void InsertSort(int[] num){ for(int i=1; i<num.length; i++) { for(int j=i; j>0; j--) { if(num[j]<num[原创 2012-02-20 18:30:48 · 858 阅读 · 0 评论 -
每天一道编程题(八)----------牛顿迭代法求根式
今天面试土豆的时候问了一道题目是说求一个数的根式,本来回答的是利用二分法求解,可是人家问了说你这个怎么取上界下界,且数值 ,又由于我们不需要保存前一次的值,那么迭代就很容易的写出如下的程序。public class Newton { public static void main(String[] args){ //n就是要迭代求数值的,s为函数上的任一点的x值,co原创 2012-09-23 20:10:03 · 2115 阅读 · 0 评论