程序最美(寻路)

你还在坚持练习你的技术吗?运动员天天训练,音乐家也会演练更难的曲章。你呢?

上一页 1 ··· 4 5 6 7 8 9 下一页

2013年7月17日

后缀表达式的计算

摘要: 后缀表达式的计算 对后缀表达式进行计算,得到表达式的值。 例如有后缀表达式:2 1 + 3 * 其结果应为: 9 后缀表达式: 1 3 5 * + 7 9 / - 其结果应为:15.222 后缀表达式: 1 3 + 5 7 - * 9 / 其结果应为: -0.889 后缀表达式计算程序如下:// 后缀表达式的计算#include #include #include #include #include #include using namespace std;void get_postfix(vector& postf){ postf.clear(); string line; ... 阅读全文

posted @ 2013-07-17 00:02 unixfy 阅读(4184) 评论(0) 推荐(1) 编辑

2013年7月15日

中缀表达式转换为后缀表达式

摘要: 中缀表达式转换为后缀表达式 首先何为中缀表达式。中缀表达式就是我们最为常见的算术表达式形式,即操作符在操作数中间。比如 3 + 4。 后缀表达式是将操作符置于操作数后面,即如下形式:3 4 +。 给定一个中缀表达式,我们如何将其转换为后缀表达式? 我们这里涉及的操作符只局限于加、减、乘、除四种运算,即四则运算,外加括号功能。 比如给定一个中缀表达式:1 + 3 * 5 – ( 7 / 9 ) 其后缀表达式应为:1 3 5 * + 7 9 / - 中缀表达式: ( 1 + 3 ) * ( 5 – 7 ) / 9 其后缀表达式为: 1 3 + 5 7 - * 9 / 我们先给出其程序实现如下:// 阅读全文

posted @ 2013-07-15 23:46 unixfy 阅读(5444) 评论(0) 推荐(0) 编辑

2013年7月10日

输出有序序列中元素的排名

摘要: 输出有序序列中元素的排名 给定一个有序序列,假设为:1, 2, 2, 8, 9, 9, 10 我们想得到各个元素在序列中的排名,比如1的排名为1,第一个2和第二个2的排名都为2,即我们想得到这样一个序列:1, 2, 2, 4, 5, 5, 7 我们首先讨论根据一个有序序列,如何得到其各个元素的排名;然后,讨论针对某个元素,如何快速得得到其排名。 一、得到整个序列各个元素的排名 程序如下:#include #include using namespace std;// 检测是否有序bool is_ordered(const vector& arr){ for (vector::size_ 阅读全文

posted @ 2013-07-10 15:28 unixfy 阅读(413) 评论(0) 推荐(0) 编辑

2013年6月30日

封装的意义

摘要: 封装的意义前面《组合序列、排列序列的生成实现》中,我们在最后讨论了如何对组合序列生成函数、排列序列生成函数进行封装,组合序列生成函数定义如下:void comb(const vector& arr, int beg, int m, vector >& coms, vector& tmp, int& total){ if (m > arr.size() - beg) { return; } if (m == 0) { coms.push_back(tmp); ++total; } else { ... 阅读全文

posted @ 2013-06-30 22:45 unixfy 阅读(760) 评论(0) 推荐(0) 编辑

2013年6月29日

递归的讨论

摘要: 递归的讨论 递归是一个强大的工具,用递归写的程序往往比较容易理解和实现。但是当面对一些递归性问题的时候,我们的第一感觉就是用递归程序实现,但是从问题到最终的实现程序之间需要经过什么?怎样才能写出正确的递归程序?我们将在这里进行关于递归的讨论。 我们首先介绍两个简单的递归实现程序,然后讨论循环与递归的关系,再结合之前递归程序,讨论如何才能写出正确的递归程序。一、两个简单的递归程序这里我们讨论阶乘的计算和斐波那契数列的计算。首先我们给出这两个的非递归实现:// 阶乘与斐波那契数列的非递归实现#include using namespace std;int fact(int n){ if (n... 阅读全文

posted @ 2013-06-29 02:34 unixfy 阅读(242) 评论(0) 推荐(0) 编辑

2013年6月28日

组合序列、排列序列的生成实现

摘要: 组合序列、排列序列的生成实现 前面我们已经讨论了关于组合数、排列数的生成《排列、组合的计算》,并没有涉及组合序列和排列序列是如何生成的。这里我们将讨论序列和排列序列是如何生成的,首先我们讨论组合序列。一、组合序列假如有如下集合(注意,集合中的元素是互异的):0, 1, 2, 3, 4, 5, 6, 7, 8, 9 我们从该集合中选取3个元素,问有多少种组合,这些组合具体是什么? 首先,我们给出程序如下:// 组合序列的生成#include #include using namespace std;void comb(const vector& arr, int beg, int m, 阅读全文

posted @ 2013-06-28 22:53 unixfy 阅读(869) 评论(0) 推荐(0) 编辑

2013年6月27日

摘要: 堆 本文我们重点讨论堆,堆分为最小堆和最大堆两种,由于两者操作操作类似,所以我们只讨论最小堆(在实现的过程中我们定义了compare函数,可以同时适用于最小堆和最大堆)。 最小堆的定义如下:A[i] #include using namespace std;typedef bool (*cmp_fun)(int a, int b);void display(const vector& arr){ for (vector::size_type i = 0; i != arr.size(); ++i) { cout b;}bool exchange(int& a, in... 阅读全文

posted @ 2013-06-27 00:54 unixfy 阅读(572) 评论(0) 推荐(0) 编辑

2013年6月23日

二分查找细则讨论

摘要: 二分查找细则讨论 二分查找有两种实现方式:非递归和递归。我们首先给出非递归的实现,然后对其中的细则进行讨论。之后,我们再讨论递归实现的细则。一、非递归实现 这里我们假设待查找序列是有序且互异的。#include #include using namespace std;void nonrec_binary(const vector& arr, int n, int& pos){ pos = -1; assert(arr.size() > 0); int left = 0, right = arr.size() - 1, middle = 0; while (left .. 阅读全文

posted @ 2013-06-23 18:54 unixfy 阅读(243) 评论(0) 推荐(0) 编辑

从每组中依次选择一个元素

摘要: 从每组中依次选择一个元素 假设有N组元素,从N组中依次选取一个元素组成一个序列。假如N组元素的个数依次为A1,A2,…,AN,那么得到的序列数应该为A1*A2*…*AN。 下面我们关注的是如何生成A1*A2*…*AN个序列。由于N是个变量,如果是用N个循环实现,只能针对特定的N个组的情况。并且如果N很大时,实现起来不现实。 这里我们采用递归的方法来实现。// 递归实现#include #include #include using namespace std;void foo(const vector >& src, int x, int n, int& total, v 阅读全文

posted @ 2013-06-23 02:18 unixfy 阅读(343) 评论(0) 推荐(0) 编辑

2013年6月22日

如何生成升序序列

摘要: 如何生成升序序列一个由3个数字组成的序列:ABC,0using namespace std;int main(){ int total = 0; for (int A = 0; A != 10; ++A) { for (int B = A; B != 10; ++B) { for (int C = B; C != 10; ++C) { ++total; } } } cout #include using namespace st... 阅读全文

posted @ 2013-06-22 11:35 unixfy 阅读(559) 评论(0) 推荐(0) 编辑

上一页 1 ··· 4 5 6 7 8 9 下一页

导航