一道百度之星编程大赛题的随笔联想·(2)
2012-12-02 23:32
316 查看
百度之星,是全球最大的中文搜索引擎,百度公司面向中国高校学生和编程爱好者所举办的高水平的程序设计大赛。他所考试的题目,全部都是算法的题目。
鄙人虽然是一个.net程序员,在工作之余,喜爱算法。 我觉得这个题目有点意思,故而分享给大家,我想到两种方法,提供大家,希望对大家起了一个开阔思路的作用。
下面介绍解法二了。
解法二,是抓小放大。 由小及大。首先,说一说我分析的思路吧。
第一步,还是判断i是不小于i/2,以此循环了。
第二步,是不是判断此范围的值的累加是不是等于相应某个值。
第三步,将其输出
第四步,如果没有就输出none这个值。
下面我们就看相应的源代码了
这个算法的作用,就是看其通过循环来看其是否相等的方法。
他与第一种的算法,有所不同,第一种方法是从其减 ,看其能否得0,第二种的方法进行了累加的算法,看其是否相等。并且这有两个指针的变量的相互的扫描。
总而言之,这两种算法,各有千秋吧。
鄙人虽然是一个.net程序员,在工作之余,喜爱算法。 我觉得这个题目有点意思,故而分享给大家,我想到两种方法,提供大家,希望对大家起了一个开阔思路的作用。
下面介绍解法二了。
解法二,是抓小放大。 由小及大。首先,说一说我分析的思路吧。
第一步,还是判断i是不小于i/2,以此循环了。
第二步,是不是判断此范围的值的累加是不是等于相应某个值。
第三步,将其输出
第四步,如果没有就输出none这个值。
下面我们就看相应的源代码了
Console.WriteLine("请输入一个正整数"); int inputNum = Convert.ToInt32(Console.ReadLine()); // 是否连续的值的标识 bool flag = false; //相应的计数的变量 int i = 1, j = 2, sum = 0; //从inputNum、2开始计数了 while (i < inputNum / 2) { sum = add(i, j); while (sum != inputNum && i < inputNum / 2 + 1) { if (sum > inputNum) i++; else j++; sum = add(i, j); } //打印了相应的循环 for (int k = i; k <= j && j > i; k++) { Console.Write(k); Console.Write(" "); } i++; Console.WriteLine(); } if (!flag) { Console.WriteLine("NONE"); } Console.ReadKey(); //计算累加的算法 static int add(int m, int n) { int sum = 0; for (int i = m; i <= n; i++) { sum += i; } return sum; }
这个算法的作用,就是看其通过循环来看其是否相等的方法。
他与第一种的算法,有所不同,第一种方法是从其减 ,看其能否得0,第二种的方法进行了累加的算法,看其是否相等。并且这有两个指针的变量的相互的扫描。
总而言之,这两种算法,各有千秋吧。
相关文章推荐
- 一道百度之星编程大赛题的随笔联想·(1)
- 随笔_一道二年级数学题引发的联想
- 百度之星编程大赛--百度语言翻译机(解答)
- Google编程大赛解题一道
- 百度之星编程大赛--饭团的烦恼(解答)
- 【平安科技】在线编程大赛活动 - 一道通过率只有1.5%的编程挑战题目
- 一个老的程序设计题(出处:百度之星编程大赛)
- 百度之星编程大赛-语言翻译机(C#解答)
- 由一道百度之星题目写起 谈谈编程中的分类的思想
- 2005年Goole编程大赛初赛题目二(750分)
- 英特尔多核平台编程优化大赛报告
- 美团点评CodeM编程大赛-题一
- 2017"百度之星"程序设计大赛 - 初赛(B)小小粉丝度度熊
- HDU 6118 度度熊的交易计划 【最小费用最大流】 (2017"百度之星"程序设计大赛 - 初赛(B))
- 2017"百度之星"程序设计大赛 - 初赛(A)今夕何夕(【判断某天是周几的板子】)
- 【每天一道编程系列-2018.3.11】—— A + B Problem
- android 学习随笔二十(多媒体编程 )
- 笨笨熊搬家问题深入--迷宫问题--深度搜索--还是填充思想并且打印出路线--递归--结构体数组---编程随笔(4)
- 一道编程之美上的问题-腾讯的笔试题目:求数组的部分乘积
- csdn第五届在线编程大赛-全然平方