以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 算法理论与分析 』 (http://bbs.xml.org.cn/list.asp?boardid=60) ---- [分享]上次笔试题目,抛砖引玉 (http://bbs.xml.org.cn/dispbbs.asp?boardid=60&rootid=&id=29068) |
-- 作者:wcdxyl -- 发布时间:3/22/2006 4:25:00 PM -- [分享]上次笔试题目,抛砖引玉 import java.util.Calendar; /** 一个自然数n,求从1开始到这个数之间有多少个1。 比如11就有3个1 */ public long getFN(long n){ for(long i = 1;i<=n;i++){ //1,2,3,4..... for(int j = 0;j<allnum.length();j++){//遍历之间的每个数 public static void main(String[] args){ long param = Long.parseLong(args[0]); Calendar b = Calendar.getInstance(); } 这个算法求数18991耗时100毫秒,考官说好的可以十几毫秒 |
-- 作者:DavidPotter -- 发布时间:6/15/2006 6:26:00 PM -- 穷举也太死板了,应该分析给定参数来判断。 ps: 楼主的算法不对吧。 for(int j = 0;j<allnum.length();j++){//遍历之间的每个数 if((allnum.substring(j).indexOf("1"))!=-1) num++; 如果数是21那么这时你的num++应该走了2次。还不如用charAt(j); |
-- 作者:zhangmei1988521 -- 发布时间:6/15/2006 10:36:00 PM -- 穷举也太死板了,应该分析给定参数来判断。 ps: 楼主的算法不对吧。 for(int j = 0;j<allnum.length();j++){//遍历之间的每个数 if((allnum.substring(j).indexOf("1"))!=-1) num++; 如果数是21那么这时你的num++应该走了2次。还不如用charAt(j);
|
-- 作者:jassyking -- 发布时间:6/17/2006 11:36:00 AM -- 好像有公式吧 |
-- 作者:phoenixinter -- 发布时间:6/19/2006 6:57:00 PM -- 递归的搞,很快的……Shanghai 2004 C |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
46.875ms |