Fork me on GitHub
摘要: 题目:有25匹马,一个5道的赛马场,最少比赛几次,能把这25匹马中的1,2,3名找出来,并排出1,2,3名?如何组织每次比赛?马可以重复赛,不考虑疲倦影响速度等其他问题。思路:首先肯定,25匹要分组赛。最容易掉入,也最容易识别的陷阱就是:5匹一组,赛5次,然后每组第一名再赛一次,总共六次,就ok了。这样的问题就在于又可能某组的第二名比其他4组的第一名都快。进而想到最坏的 可能就是,分组的时候把真正的前三名分到同一组了。问题的关键变成了第6次以后应该怎么挑选再赛的马5分钟左右,应该就能想到下面的正确思路。前6次就按照刚才的赛法,5次小组赛,一次各小组第一名赛,然后按各小组第一名在第六次比赛中的名 阅读全文
posted @ 2012-04-09 15:24 浪飞-louffy 阅读(2097) 评论(0) 推荐(0) 编辑
摘要: 题目:已知一个数组a[N],构造一个数组b[N],构造规则:b[i]=a[0]*a[1]*a[2]...a[N]/a[i]; 要求: 1、不可以使用除法; 2、时间复杂度为O(n),空间复杂度为S(0); 3、除遍历使用的变量外,不可以使用其它变量;从前往后扫一遍,然后从后往前再扫一遍。也就是说,线性时间构造两个新数组,B[i]=A[1]*A[2]*...*A[i],A[i]=A[n]*A[n-1]*...*A[i]。于是,B[i]=B[i-1]*A[i+1]。i=N和0特殊处理#include<stdio.h> int main() { int i, a[5]={... 阅读全文
posted @ 2012-04-09 14:46 浪飞-louffy 阅读(332) 评论(0) 推荐(0) 编辑