随笔分类 - 算法与数据结构
摘要:注:已选择性忽略绘图部分【程序61】(利用二维数组)题目:打印出杨辉三角形(要求打印出10行如下图) 1.程序分析: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 #include 2 main() 3 { 4 int a[10][10]; 5 ...
阅读全文
摘要:【程序31】题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。 1 #include 2 using namespace std; 3 int main() 4 { 5 char c; 6 cin>>c; 7 switch(c)...
阅读全文
摘要:可读性:1、2算法:3、4、5、11、13、14【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 1 #include 2 using namespac...
阅读全文
摘要:如果一个字符串包含两个相邻的重复字串,则称它是“容易的串”,其他串称为“困难的串”。例如,BB,ABCDACABCAB,ABCDABCD都是容易的,而D,DC,ABDAB,CBABCBA都是困难的。输入正整数n和L,输出由前L个字符组成的,字典序第k小的困难的串。例如,当L=3时,前7个困难的串分别...
阅读全文
摘要:题目来自ACM之家:http://www.acmerblog.com/offer10-2533/题目:亲们!!我们的外国友人YZ这几天总是睡不好,初中奥数里有一个题目一直困扰着他,特此他向JOBDU发来求助信,希望亲们能帮帮他。问题是:求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。输入:输入有多组数据,每组测试数据为一行。每一行有两个整数a,b(0 1时, 1出
阅读全文
摘要:说明: 1.NO.3答案不止一种 2.NO.5的完美负载均衡思想值得深入学习NO.1有20瓶药丸,其中19瓶装有1克/粒的药丸,余下一瓶装有1.1克/粒的药丸。给你一台称重精准的天平,怎么找出比较重的那瓶药丸?天平只能用一次。NO.2有个8×8棋盘,其中对角的角落上,两个方格被切掉了。给定31块多米诺骨牌,一块骨牌恰好可以覆盖两个方格。用这31块骨牌能否盖住整个棋盘?请证明你的答案(提供范例,或证明为什么不可能)。NO.3有两个水壶,容量分别为5夸脱(美制:1夸脱=0.946升,英制:1夸脱=1.136升)和3夸脱,若水的供应不限量(但没有量杯),怎么用这两个水壶得到刚好4夸脱的水?
阅读全文
摘要:题目:写一个函数,求两个整数的之和,要求在函数体内不得使用+、-、×、÷。分析:对数字进行运算,除了进行四则运算外,就只剩下位运算这条道路了。 位运算是对二进制的而言的。这里需要用到三个运算:异或、与、左移位。代码如下: 1 int add(int num1, int num2) 2 { 3 if(num2==0) 4 return num1; 5 else 6 { 7 int sum=num1^num2; 8 int carry=(num1&num2)<<1; 9 return add(sum,ca...
阅读全文
摘要:这是《计算机算法分析与设计》课件第二章“图与遍历算法”内容的总结。 1.关于有向图 有向图的表示也可以用邻接矩阵和关联矩阵,邻接矩阵的表示和无向图一样,但是关联矩阵为指明边的方向,只用 0,1 两个元素是不够的,可以增加一个元素-1。若i是j的始点,赋值为1,若i是j的终点,赋值为-1,其余赋值为0。 有向图 D 说是连通的是指其基础图是连通的。如果 D 中任意两个顶点都是相互有向可达的,则说有向图 D 是双向连通的(或叫强连通) 2.关于赋权图 描述一个赋权图时,如果顶点i、j之间有一条边连接,而且权值为a,则其邻接矩阵中的(i,j)元素为a(而不再是1),其余元素统一取微0或...
阅读全文
摘要:这是《计算机算法分析与设计》课件第二章“图与遍历算法”内容的总结。 一、关于无向图 1.无向图,简称图。图是一个三元组 G=( V, E, I ), 其中,V是顶点的集合,E是边的集合,而I是关联关系,它指明了 E 中的每条边与 V 中的每个顶点之间的关联关 系:每条边必定连接两个而且只有两个顶点,它们称为该边的端点。有边相连的 两个顶点称为相邻的。连接顶点v的边的条数称为v的度,记做 d(v). 图 G=( V, E, I )中顶点的度与边数有如下的 Euler 公式: 所有顶点的度数=2*边数 2.简单图:没有重复边的图。n 阶完全图是指具有 n 个顶点而且每两个顶点 之间都有...
阅读全文
摘要:【问题描述】 某城市有一个火车站,铁轨铺设如图所示。有n节车厢从A方向驶入车站,按进站顺序编号为1~n。你的任务是让它们按照某种特定的顺序进入B方向的铁轨并驶出车站。为了重组车厢,你可以借助中转站C。这是一个可以停放任意多节车厢的车站,但由于末端封顶,驶入C的车厢必须按照相反的顺序驶出。对于每个车厢,一旦从A移入C,就不能再回到A了;一旦从C移入B,就不能回到C了。换句话说,在任意时刻,只有两种选择:A→C和C→B。这个问题和之前数据结构实验的火车入轨类似,而且较之简化。自己尝试写了下,和书上参考答案的代码量仍有较大差距。代码如下: 1 #include 2 using namespace .
阅读全文
摘要:问题描述: 桌上有一叠牌,从第一张牌(即位于顶面的牌)开始从上往下依次编号为1~n。当至少还剩两张牌时进行一下操作:把第一张牌扔掉,然后把新的第一张牌放到整叠牌的最后。输入n,输出每次扔掉的牌,以及最后剩下的牌。 样例输入:7 样例输出:1 3 5 7 4 2 6【分析】 显然这是关于队列的应用,复习并采用了课本的循环队列。代码如下: 1 #include 2 using namespace std; 3 const int QueueSize=100; 4 template 5 class CircleQueue 6 { 7 public: 8 ...
阅读全文