<4D F736F F F696E74202D20B5DA3230BDB25FB6AFCCACB9E6BBAE2E BBCE6C8DDC4A3CABD5D>

Size: px
Start display at page:

Download "<4D F736F F F696E74202D20B5DA3230BDB25FB6AFCCACB9E6BBAE2E BBCE6C8DDC4A3CABD5D>"

Transcription

1 程序设计实习 (II): 算法设计 第二十讲动态规划

2 影响搜索效率的因素 搜索对象 ( 枚举什么 ) 上一节课回顾 搜索顺序 ( 先枚举什么, 后枚举什么 ) BFS: 广度优先 DFS: 深度优先 A*: 估价函数最小优先 剪枝 ( 及早判断出不符合要求的情况 ) 3 3

3 问题提出 : 为什么要用动态规划 BFS 和 DFS: 树形递归存在冗余计算 例 1:POJ 2753 Fibonacci i 数列 求 Fibonacci 数列的第 n 项 int f(int n){ if(n==0 n==1) return n; return f(n-1)+f(n-2); 4

4 树形递归存在冗余计算 为了除去冗余, 需要从已知条件开始计算, 并记 录计算过程中的中间结果 f(5) f(4) f(3) f(3) f(2) f(2) f(1) f(2) f(1) f(1) f(0) f(1) f(0) 1 f(1) f(0) 冗余计算! 5

5 去除冗余 : int f[n+1]; f[1]=f[2]=1; int i; 树形递归存在冗余计算 for(i=3;i<=n;i++) ; f[i] = f[i-1]+f[i-2]; cout << f[n] <<endl; 用空间换时间 动态规划 6

6 什么是动态规划? 动态规划是求解包含重叠子问题的最优化方法 基本思想 : 将原问题分解为相似的子问题 在求解的过程中通过保存子问题的解求出原问题的解 ( 注意 : 不是简单分而治之 ) 只能应用于有最优子结构的问题 ( 即局部最优解能决定全局最优解, 或问题能分解成子问题来求解解 ) 动态规划 = 记忆化搜索 7

7 动态规划是如何工作的 例 2 POJ 1163 数字三角形 在上面的数字三角形中寻找一条从顶部到底边的路径, 使得路径上所经过的数字之和最大 路径上的每一步都只能往左下或右下走 只需要求出这只需要求出这个最大和即可, 不必给出具体路径 三角形的行数大于 1 小于等于 100 数字为

8 输入格式 : POJ 1163 数字三角形问题 5 // 三角形行数, 下面是三角形 要求输出最大和 9

9 算法一 : 递归 解题思路 设 f(i, j) 为三角形上从点 (i, j) 出发向下走的最长路径, 则 f(i, j) = max(f(i+1, j), f(i+1, j+1))+d(i, j) 要输出的就是 f(0,0) 即从最上面一点出发的最长路径 10

10 解题思路 D(r, j) 表示第 r 行第 j 个数字, MaxSum(r, j) 代表从第 r 行的第 j 个数字到底边的各条路径中, 数字之和最大的那条路径的数字之和 则本题是要求 MaxSum(0,0) ( 假设行编号和一行内数字编号都从 0 开始 ) 从某个 D(r, j) 出发, 显然下一步只能走 D(r+1,j) 或者 D(r+1, j+1), 所以对于 N 行的三角形 : if ( r == N-1 ) // 最底层 MaxSum(r,j) = D(N-1,j) else MaxSum(r,j) = D(r, j)+max(maxsum(r+1,j), MaxSum(r+1,j+1)); 11

11 数字三角形的递归程序 #include <iostream> using namespace std; #define MAX 101 int n, triangle[max][max]; int longestpath(int i, int j); void main(){ int i, j; cin >> n; for(i=0; i<n; i++) for(j=0; j<=i; j++) cin >> triangle[i][j]; cout << longestpath(0,0) << endl; intlongestpath(int th(i ti, intj){ if(i==n) return 0; int x = longestpath(i+1, j); int y = longestpath(i+1, j+1); if(x<y) x=y; return x+triangle[i][j]; 12 超时!!

12 为什么超时? 回答 : 重复计算 如果采用递归的方法, 深度遍历每条路径, 存在大量重复 计算, 则时间复杂度为 2 n, 对于 n = 100, 肯定超时 13

13 解题思路 一种可能的改进思想 : 从下往上计算, 对于每一点, 只需要保留从下面来的路径中最大的路径的和即可 因为在它上面的点只关心到达它的最大路径和, 不关 心它从那条路径上来的 问题 : 有几种解法? 从使用不同的存储开销角度分析 14

14 解法 1 如果每算出一个 MaxSum(r,j) 就保存起来, 则可以用 o(n 2 ) 时间完成计算 因为三角形的数字总数是 n(n+1)/2 此时需要的存储空间是 : int D[100][100]; // 用于存储三角形中的数字 int MaxSum[100][100]; // 用于存储每个 MaxSum(r,j) MaxSum

15 #define MAX_NUM 100 int D[MAX_NUM + 10][MAX_NUM + 10]; int N; int MaxSum[MAX_NUM + 10][MAX_NUM + 10]; int main() { int ti, j; scanf("%d", & N); for( i = 1; i <= N; i ++ ) for( j = 1; j <= i; j ++ ) scanf("%d", &D[i][j]); for( j = 1; j <= N; j ++ ) MaxSum[N][j] = D[N][j]; for( i = N; i > 1; i -- ) for( j = 1; ;j < i ;j ++ ){ if( MaxSum[i][j] > MaxSum[i][j+1] ) MaxSum[i-1][j] = MaxSum[i][j] + D[i-1][j]; else MaxSum[i-1][j] = MaxSum[i][j+1] + D[i-1][j]; printf( %d, MaxSum[1][1]); return 0; 16

16 解法 2 没必要用二维 Sum 数组存储每一个 MaxSum(r,j), 只要从底层一行行向上递推 那么只要一维数组 Sum[100] 即可, 即只要存储一行的 MaxSum 值就可以 比解法一改进之处在于节省空间, 时间复杂度不变 17

17 #define MAX_NUM 100 int D[MAX_NUM + 10][MAX_NUM + 10]; int N; int amaxsum[max_num + 10]; int main() { int i, j; scanf("%d", & N); for( i = 1; i <= N; i ++ ) for(j=1;j<=i;j++) j j scanf("%d", &D[i][j]); for( j = 1; j <= N; j ++ ) amaxsum[j] = D[N][j]; for( i = N; i > 1; i -- ) for( j = 1; j < i; j ++ ) { if( amaxsum[j] > amaxsum[j+1] ) amaxsum[j] = amaxsum[j] + D[i-1][j]; else amaxsum[j] = amaxsum[j+1] + D[i-1][j]; printf("%d", amaxsum[1]); return 0; 18

18 解法 3 能否不用二维数组 D[100][100] 存储数字呢? 存储开销 :n sizeof(int) 思路 : 倒过来考虑 前面的思路是从底往上最终算出 MaxSum(0,0) 如果从顶往下算, 最终算出每一个 MaxSum(N-1,j), 然后再取最大的 MaxSum(N-1,j), 不就是答案吗? 此时递推公式为 : if( r == 0 ) MaxSum(r,j) = D[0][0]; else MaxSum(r,j) = Max(MaxSum(r-1,j-1), MaxSum(r-1,j))+ D[r][j]; 19

19 由于两重循环形式为 : 解法 3 for( r = 0 ; r < N ; r ++) for( (j = 0 ; j < r+1 ; j ++){.. r, j 不断递增, 所以实际上不需要 D[100][100] 数组, 每次从文件里读取下一个数字即可 而每一行的每个 MaxSum(r,j) 仍然都需要存储起来. 这样, 只需要一个 Sum[100] 数组 ( 注 : 只需设一个临时存储变量, 在计算 MaxSum(r,j) 后写 入数组时, 暂存 MaxSum(r-1,j) 1j)) ) 20

20 解法 3 ntmp Sum i= i= i= i= i=

21 #include <stdafx.h> #define MAX_NUM 100 int N; int Sum[MAX_NUM+1]; int main() { int i, j; int ninput = 0, ntmp = 0; memset( Sum, 0, sizeof(sum)); scanf("%d", & N); scanf("%d", &Sum[0]); for( i = 1; i < N; i ++ ) { ntmp = 0; for( (j = 0; ;j < i+1; ;j ++ ){ scanf("%d", &ninput); if (Sum[j]> ntmp) { ntmp = Sum[j]; Sum[j] += ninput; else { ninput += ntmp; ntmp = Sum[j]; Sum[j] = ninput; ntmpsum = 0; for( i = 0; i < N; i ++ ) { if (Sum[i]> ntmpsum) ntmpsum = Sum[i]; 22 printf("%d", ntmpsum); return 0;

22 递归到动规的一般转化方法 原来递归函数有几个参数, 就定义一个几维的数组 数组的下标是递归函数参数的取值范围 数组元素的值是递归函数的返回值数的返值 这样就可以从边界开始, 逐步填充数组, 相当于计 算递归函数值的逆过程 23

23 动规解题的一般思路 1. 将原问题分解为子问题 把原问题分解为若干个子问题, 子问题经常和原问题 形式相似, 有时甚至完全一样, 只不过规模变小了 子问题的解一旦求出就会被保存, 所以每个子问题只 需求解一次 24

24 动规解题的一般思路 2. 确定状态 将和子问题相关的各个变量的一组取值, 称之为一个状态 一个状态对应于一个或多个子问题 所谓某个状态下的 值, 就是这个状态所对应的子问题的解 所有状态的集合构成问题的 状态空间 状态空间 的大小, 与用动态规划解决问题的时间复杂度直接相关 在数字三角形的例子里, 一共有 N (N+1)/2 个数字, 所以这个问题的状态空间里一共就有 N (N+1)/2 个状态 在该问题里每个状态只需要经过一次, 且在每个状态上作计算所 花的时间都是和 N 无关的常数 25

25 2. 确定状态 动规解题的一般思路 用动态规划解题, 经常碰到的情况是 : K 个整型变量能构成一个状态 ( 如数字三角形中的行号和列号这两个变量构成 状态 ) 如果这 K 个整型变量的取值范围分别是 N1, N2, Nk, 那么, 我们就可以用一个 K 维的数组 array[n1] [N2] [Nk] [Nk] 来存储各个状态的 值 这个 值 未必就是一个整数或浮点数, 可能是需要一个结构才能表示的, 那么 array 就可以是一个结构数组 一个 状态 下的 值 通常会是一个或多个子问题的解 26

26 3. 确定状态转移方程 动规解题的一般思路 定义出什么是 状态, 以及在该 状态 下的 值 后, 就要找出不同的状态之间如何迁移 即如何从一个或多个 值 已知的 状态, 求出另一个 状态 的 值 状态的迁移可以用递推公式表示, 此递推公式也可被称作 状态转移方程 数字三角形的状态转移方程 anmaxsum r j, Dr j r N Max anmaxsum r 1 j. anmaxsum r 1 j 1 Dr j, otherwise 27

27 例题 : 最长上升子序列 一个数的序列 b i, 当 b 1 < b 2 <... < b S 的时候, 我们称这 个序列是上升的 对于给定的一个序列 (a 1, a 2,..., a N ), 我们可以得到一些上升的子序列 (a i1, a i2,..., a ik ), 这里 1 <= i 1 < i 2 <... < i K <= N 比如, 对于序列 (1,7,3,5,9,4,8), 有它的一些上升子序 列, 如 (1, 7), (3, 4, 8) 等等 这些子序列中最长的长度是 4, 比如子序列 (1358) (1, 3, 5, 或 (1, 3, 4, 8) 你的任务, 就是对于给定的序列, 求出最长上升子序 列的长度 28

28 输入要求 例题 : 最长上升子序列 输入的第一行是序列的长度 N (1 <= N <= 1000) 第二行给出序列中的 N 个整数, 这些整数的取值范围都在 0 到 输出要求 最长上升子序列的长度 输入样例 输出样例 4 29

29 解题思路 (1): 找子问题 经过分析, 发现求以 a k (k=1, 2, 3 N) 为终点的最长 上升子序列的长度是个好的子问题 这里把一个上升子序列中最右边的那个数, 称为该子序列的 终点 虽然这个子问题和原问题形式上并不完全一样, 但是只要这 N 个子问题都解决了, 那么这 N 个子问题的解中, 最大的那个就是整个问题的解 30

30 解题思路 (2): 确定状态 上面所述的子问题只和一个变量相关, 就是数字的 位置 因此序列中数的位置 k 就是 状态 状态 k 对应的 值, 就是以 a k 做为 终点 的最长上升 子序列的长度 这个问题的状态一共有 N 个 31

31 解题思路 (3): 找出状态转移方程 状态定义出来后, 转移方程就不难想了 假定 MaxLen (k) 表示以 a k 做为 终点 的最长上升子序列的长度, 那么 : MaxLen (1) = 1 MaxLen (k) = Max { MaxLen (i):1<i < k 且 a i < a k 且 k 这个状态转移方程的意思就是,MaxLen(k) 的值, 就是在 a k 左边, 终点 数值小于 a k, 且长度最大的那个上升子序列的长度再加 1 因为 a k 左边任何 终点 小于 a k 的子序列, 加上 a k 后就能形成一个更长的上升子序列 实际实现的时候实, 可以不必编写递归函数, 因为从 MaxLen(1) 就能推算出 MaxLen(2), 有了 MaxLen(1) 和 MaxLen(2) 就能推算出 MaxLen(3) 32

32 #include <stdio.h> #include <memory.h> #define MAX_N 1000 int b[max_n + 10]; int amaxlen[max_n + 10]; main(){ int N; scanf("%d", & N); for( int i = 1;i <= N;i ++ ) scanf("%d", & b[i]); amaxlen[1] = 1; for( i = 2; i <= N; i ++ ) { // 每次求以第 i 个数为终点的最长上升子序列的长度 int ntmp = 0; // 记录满足条件的, 第 i 个数左边的上升子 // 序列的最大长度 33

33 for( int j = 1;j<i;j++){// j 察看以第 j 个数为终点的最 // 长上升子序列 if( b[i] > b[j] ) { if( ntmp < amaxlen[j] ) ntmp = amaxlen[j]; amaxlen[i] = ntmp + 1; int nmax = -1; for( i = 1; i <= N; i ++ ) if( nmax < amaxlen[i]) nmax = amaxlen[i]; printf("%d\n", nmax); amaxlen[i] 的值, 就是在 b[i] 左边, 终点 数值小于 b[i] 且长度最大的那个上升子序列的长度再加 1 34

34 最长公共子序列 POJ1458 给出两个字符串, 求出这样的一个最长的公共子序列的长度 最长的公共子序列 : 子序列中的每个字符都能在两个原串中找到, 而且每个字符的先后顺序和原串中的先后顺序一致 35

35 最长公共子序列 Sample Input Sample Output abcfbc abfcab 4 programming contest 2 abcd mnp 0 36

36 算法 1: 递归 设两个字符串分别是 char str1[maxl]; 长度是 len1 char str2[maxl]; 长度是 len2 设 f(str1,len1,str2,len2) 为 str1 和 str2 的最大公共子串的长度, 则可以对两个字符串的最后一个字符的情况进行枚举 : 情况一 :str1[len1-1] == str2[len1-1], 则 f(str1,len1,str2,len2) = 1+ f(str1,len1-1,str2,len2-1) 1str2len21) 情况二 :str1[len1-1]!= str2[len1-1], 则 f(str1,len1,str2,len2) (f( t 1 l 1 1 t2l 2) f(t1l 1 t2l 21)) = max(f(str1,len1-1,str2,len2), f(str1,len1,str2,len2-1)) 程序如下 : 37

37 算法 1: 递归 #include <iostream> using namespace std; #include <string.h> #define MAX 1000 char str1[max], str2[max]; int commonstr(int,int); int); void main(){ while(cin>> str1 >> str2){ intlen1=strlen(str1); intlen2=strlen(str2); e cout<<commonstr(len1-1,len2-1); cout<<endl; 38

38 算法 1: 递归 int commonstr(int len1,int len2){ if(len1==-1 len2==-1) return 0; if(str1[len1]==str2[len2]) 1] t 2]) return 1+commonstr(len1-1,len2-1); else{ int tmp1=commonstr(len1-1,len2); int tmp2=commonstr(len1,len2-1); if(tmp1>tmp2) return eu tmp1; else p return tmp2; 超时! 39

39 输入两个子串 s1,s2 算法 2: 动态规划 设 MaxLen(i, j) 表示 : s1 的左边 i 个字符形成的子串, 与 s2 左边的 j 个字符形成的子串的最长公共子序列的长度 MaxLen(i, a e (,j) 就是本题的 状态, 定义一数组 假定 len1 = strlen(s1), len2 = strlen(s2) 那么题目就是要求 MaxLen(len1,len2) len2) 40

40 显然 : 算法 2: 动态规划 MaxLen(n,0) = 0 ( n=0 len1) MaxLen(0,n) = 0 ( n=0 len2) 递推公式 : if ( s1[i-1] == s2[j-1] ) else MaxLen(i,j) (,j) = MaxLen(i-1,j-1) + 1; MaxLen(i,j) = Max(MaxLen(i,j-1), MaxLen(i-1,j)); 41

41 S1 长度为 i S1 s1[i-1] S2 长度为 j S1 i-1 S2 s2[j-1] S2 j-1 MaxLen(S1,S2) 不会比 MaxLen(S1,S2 j-1) ) 和 MaxLen(S1 i-1,s2) 都大, 也不会比两者中任何一个小 42

42 #include <iostream> #include <string.h> using namespace std; char sz1[1000]; char sz2[1000]; int anmaxlen[1000][1000]; int main(){ while( cin >> sz1 >> sz2 ) { int nlength1 = strlen( sz1); int nlength2 = strlen( sz2); int ntmp; int i, j; for( i = 0; i <= nlength1; i ++ ) anmaxlen[i][0] [][ ] = 0; for( j = 0; j <= nlength2; j ++ ) anmaxlen[0][j] = 0; 43

43 44 for( i = 1;i <= nlength1;i ++ ) { for( j = 1; j <= nlength2; j ++ ) { if( sz1[i-1] == sz2[j-1] ) anmaxlen[i][j] = anmaxlen[i-1][j-1] + 1; else { int nlen1 = anmaxlen[i][j-1]; int nlen2 = anmaxlen[i-1][j]; if( nlen1 > nlen2 ) anmaxlen[i][j] = nlen1; else anmaxlen[i][j] = nlen2; cout << anmaxlen[nlength1][nlength2] << endl;

44 例题 : POJ 1661 Help Jimmy "Help Jimmy" 是在下图所示的场景上完成的游戏 : 45

45 例题 : POJ 1661 Help Jimmy 场景中包括多个长度和高度各不相同的平台 地面是最低的平台, 高度为零, 长度无限 老鼠 Jimmy 在时刻 0 从高于所有平台的某处开始下落, 它的下落速度始终为 1 米 / 秒 当 Jimmy 落到某个平台上时, 游戏者选择让它向左还是向右跑, 它跑动的速度也是 1 米 / 秒 当 Jimmy 跑到平台的边缘时, 开始继续下落 Jimmy 每次下落的高度不能超过 MAX 米, 不然就会摔死, 游戏也会结束 设计一个程序, 计算 Jimmy 到地面时可能的最早时间 46

46 输入数据 第一行是测试数据的组数 t(0<=t<=20) t 每组测试数据的第一行是四个整数 N,X,Y,MAX, 用空格分隔 N 是平台的数目 ( 不包括地面 ),X X 和 Y 是 Jimmy 开始下落的位置的横竖坐标,MAX 是一次下落的最大高度 接下来的 N 行每行描述一个平台, 包括三个整数,X1[i], X2[i] 和 H[i] H[i] 表示平台的高度,X1[i] 和 X2[i] 表示平台左右端点的横坐标 1 <= N <= 1000, <= X, X1[i], X2[i] <= 20000,0 < H[i] < Y <= 20000(i = 1..N) 所有坐标的单位都是米 Jimmy 的大小和平台的厚度均忽略不计 如果 Jimmy 恰好落在某个平台的边缘, 被视为落在平台上 所有的平台均不重叠或相连 测试数据保 Jimmy 一定能安全到达地面 47

47 输出要求 对输入的每组测试数据, 输出一个整数,Jimmy 到地面时可能的最早时间 输入样例 输出样例 23 48

48 解题思路 (1) Jimmy 跳到一块板上后, 可以有两种选择, 向左走, 或向右走 走到左端和走到右端所需的时间, 是很容易计算 如果我们能知道, 以左端为起点到达地面的最短时间, 和以右端为起点到达地面的最短时间, 那么向左走还是向右走, 就很容选择 因此, 整个问题就被分解成两个子问题, 即 Jimmy 所在位置下方第一块板左端为起点到地面的最短时间, 和右端为起点到地面 的最短时间 这两个子问题在形式上和原问题是完全一致的 将板子从上到下从 1 开始进行无重复的编号 ( 越高的板子编号越 小, 高度相同的几块板子, 哪块编号在前无所谓 ), 那么, 和上 面两个子问题相关的变量就只有板子的编号 49

49 解题思路 (2) 不妨认为 Jimmy 开始的位置是一个编号为 0, 长度为 0 的板子, 假设 LeftMinTime(k) 表示从 k 号板子左端到地面的最短时间, RightMinTime(k) 表示从 k 号板子右端到地面的最短时间, 那么, 求板子 k 左端点到地面的最短时间的方法如下 : 令 : h(i) 代表 i 号板子的高度, Lx(i) 代表 i 号板子左端点的横坐标, Rx(i) () 代表 i 号板子右端点的横坐标 则 :h(k)-h(m) 当然就是从 k 号板子跳到 m 号板子所需要的时间, Lx(k)-Lx(m) 就是从 m 号板子的落脚点走到 m 号板子左端点的 时间,Rx(m)-Lx(k) 就是从 m 号板子的落脚点走到右端点所需 的时间 50

50 求 LeftMinTime(k) 的过程 if ( 板子 k 左端正下方没有别的板子 ){ if( 板子 k 的高度 h(k)>max) LeftMinTime(k) = ; else LeftMinTime(k) = h(k); else if( 板子 k 左端正下方的板子编号是 m ) LeftMinTime(k) = h(k)-h(m) ( ) + Min( LeftMinTime(m) + Lx(k)-Lx(m), RightMinTime(m) + Rx(m)-Lx(k) ); 求 RightMinTime(k) 的过程类似 h(k)-h(m) h(m) 51 LeftMinTime(m) Lx(k)-Lx(m) Rx(m)-Lx(k) RightMinTime(m)

51 实现考虑 不妨认为 Jimmy 开始的位置是一个编号为 0, 长度为 0 的板子, 那么整个问题就是要求 LeftMinTime(0) 输入数据中, 板子并没有按高度排序, 所以程序中一定要首先将板子排序 LeftMinTime(k) () 和 RightMinTime(k) 可以用同一个过程来实现 ( 用一个布尔变量来区分 ) 具体实现参考教材 P231 52

52 53 Help Jimmy 的非递归解法 #include<iostream> using namespace std; const int inf=0x7fffffff; struct Board{ int high; int left; int right; ; Board board[1005]; int cmp(const void *a,const void *b) { // 按高度从大到小排序 return (*(Board *)b).high-(*(board *)a).high; int min(int a, int b) {return a > b? b:a; int main(){ int i, j, t, N, X, Y, MAX, ans; int f[1005][2]; bool LEFT, RIGHT; cin>>t;

53 while(t--){ cin>>n>>x>>y>>max; ans=inf; board[0].left=board[0].right=x; board[0].high=y; f[0][0]=f[0][1]=0; f[0][1] 0; for(i=1;i<=n;i++){ cin>>board[i].left>>board[i].right>>board[i].high; f[i][0]=f[i][1]=inf; f[i][1] inf; qsort(board,n+1,sizeof(board[0]), cmp); for(i=0;i<=n;i++){ if(f[i][0]==f[i][1]&&f[i][0]==inf) continue; LEFT=RIGHT=0; for(j=i+1;j<=n&&board[i].high-board[j].high<=max &&!(LEFT&&RIGHT);j++){ // 在可以掉下的范围内进行 if(board[i].left>=board[j].left&&board[i].left<=board[j].right&&!left) left&&board[i] left<=board[j] right&&!left) { // 如果左边可以掉下 f[j][0]=min(f[j][0],f[i][0]+board[i].left-board[j].left); f[j][1]=min(f[j][1],f[i][0]+board[j].right-board[i].left); f[i][0]+board[j] right-board[i] LEFT=1; 54

54 if(board[i].right>=board[j].left&&board[i].right<=board[j].right&&!right){ // 如果右边可以掉下 f[j][0]=min(f[j][0] min(f[j][0], f[i][1]+board[i].right f[i][1]+board[i]right-board[j] board[j].left); f[j][1]=min(f[j][1], f[i][1]+board[j].right-board[i].right); RIGHT=1; if(board[i].high<=max&&!left) ans=min(ans, f[i][0]); // 如果可以直接从左边掉在地上 if(board[i].high<=max&&!right) ans=min(ans, f[i][1]); // 如果可以直接从右边掉在地上 cout<<ans+y<<endl; return 0; // 类似于数字三角形问题, 可能还会有其他解法 55

55 总结 : 动规的要诀 用动态规划解题, 关键是要找出 状态, 和在 状态 间进行转移的办法 ( 即状态转移方程 ) 我们一般在动规的时候所用到的一些数组, 也就 是用来存储每个状态的最优值的 56

56 小结 枚举 > 搜索 > 动态规划 ( 系统化 ) ( 记忆化 ) 57

57 方式 1: 递归 - 剪枝 搜索的实现 整个搜索过程中, 最终状态始终不变 不要考虑明显不能到达最终状态的路径 方式 2: 动态规划 目的 在搜索过程中, 把计算的结果保留下来 后面的搜索过程中, 努力使用前面搜索过程的计算机结果, 避免重复的计算 方法 把最终目标分解成一些相对简单的目标 先实现这些相对简单的目标, 在此基础上实现最终的目标 具体使用哪种方式? 依情况而定 没有什么重复的计算可以使用 : 递归, 为保持简洁 重复的计算占的比重很大 : 动态规划, 为提高效率 58

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf (%d, & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf (%d %d 2013 18 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp, Compilation Error cin scanf Time Limit Exceeded 1: A 5 B 5 C 5 D 5 E 5 F 5 1 2013 C 1 # include 2 int main ( void ) 3 { 4 int cases, a, b,

More information

C/C++语言 - C/C++数据

C/C++语言 - C/C++数据 C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;

More information

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf (%d, & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9 201 201 21 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp Compilation Error long long cin scanf Time Limit Exceeded 1: A 1 B 1 C 5 D RPG 10 E 10 F 1 G II 1 1 201 201 C 1 # include 2 int main ( void

More information

chap07.key

chap07.key #include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,

More information

C/C++程序设计 - 字符串与格式化输入/输出

C/C++程序设计 - 字符串与格式化输入/输出 C/C++ / Table of contents 1. 2. 3. 4. 1 i # include # include // density of human body : 1. 04 e3 kg / m ^3 # define DENSITY 1. 04 e3 int main ( void ) { float weight, volume ; int

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 北京大学暑期课 ACM/ICPC 竞赛训练 北京大学信息学院郭炜 guo_wei@pku.edu.cn http://weibo.com/guoweiofpku 课程网页 :http://acm.pku.edu.cn/summerschool/pku_acm_train.htm 动态规划 北京大学信息学院郭炜 例题一 数字三角形 (POJ1163) 7 3 8 8 1 0 2 7 4 4 4 5 2

More information

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式] Arrays and Strings 存储同类型的多个元素 Store multi elements of the same type 数组 (array) 存储固定数目的同类型元素 如整型数组存储的是一组整数, 字符数组存储的是一组字符 数组的大小称为数组的尺度 (dimension). 定义格式 : type arrayname[dimension]; 如声明 4 个元素的整型数组 :intarr[4];

More information

C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1

C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1 C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1 1 CARDGAME 1 CardGame 题目描述 桌上有一叠牌, 从第一张牌 ( 即位于顶面的牌 ) 开始从上往下依次编号为 1~n 当至少还剩两张牌时进行以下操作 : 把第一张牌扔掉, 然后把新的第一张放到整叠牌的最后 请模拟这个过程, 依次输出每次扔掉的牌以及最后剩下的牌的编号 输入 输入正整数 n(n

More information

C++ 程序设计 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 1 PERSON 1 Person 题目描述 编写程序, 定义一个基类 Person, 包含 name 和 age 两个数据成员 ; 再由它派生出学生类 Student 和教师类 Teacher, 其中学生类添加学号 no 数据, 教师类添加职称 title 数据 ; 要求每个类均有构造函数 析构函数和显示数据的函数

More information

C++ 程序设计 OJ4 - 参考答案 MASTER 2019 年 5 月 30 日 1

C++ 程序设计 OJ4 - 参考答案 MASTER 2019 年 5 月 30 日 1 C++ 程序设计 OJ4 - 参考答案 MASTER 2019 年 月 30 日 1 1 STRINGSORT 1 StringSort 题目描述 编写程序, 利用 string 类完成一个字符串中字符的排序 ( 降序 ) 并输出 输入描述 输入仅一行, 是一个仅由大小写字母和数字组成的字符串 输出描述 输出排序后的字符串 样例输入 abcde 样例输出 edcba 提示 使用 std::sort

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 北京大学暑期课 ACM/ICPC 竞赛训练 北京大学信息学院郭炜 guo_wei@pku.edu.cn http://weibo.com/guoweiofpku 课程网页 :http://acm.pku.edu.cn/summerschool/pku_acm_train.htm 动态规划 北京大学信息学院郭炜 例题一 数字三角形 (POJ1163) 7 3 8 8 1 0 2 7 4 4 4 5 2

More information

第3章.doc

第3章.doc 3 3 3 3.1 3 IT Trend C++ Java SAP Advantech ERPCRM C++ C++ Synopsys C++ NEC C C++PHP C++Java C++Java VIA C++ 3COM C++ SPSS C++ Sybase C++LinuxUNIX Motorola C++ IBM C++Java Oracle Java HP C++ C++ Yahoo

More information

C C

C C C C 2017 3 8 1. 2. 3. 4. char 5. 2/101 C 1. 3/101 C C = 5 (F 32). 9 F C 4/101 C 1 // fal2cel.c: Convert Fah temperature to Cel temperature 2 #include 3 int main(void) 4 { 5 float fah, cel; 6 printf("please

More information

C 1

C 1 C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 北京大学暑期课 ACM/ICPC 竞赛训练 北京大学信息学院郭炜 guo_wei@pku.edu.cn http://weibo.com/guoweiofpku 课程网页 :http://acm.pku.edu.cn/summerschool/pku_acm_train.htm 动态规划 北京大学信息学院郭炜 例题一 数字三角形 (POJ1163) 7 3 8 8 1 0 2 7 4 4 4 5 2

More information

2013 C 1 #include <stdio.h> 2 int main(void) 3 { 4 int cases, i; 5 long long a, b; 6 scanf("%d", &cases); 7 for (i = 0; i < cases; i++) 8 { 9 scanf("%

2013 C 1 #include <stdio.h> 2 int main(void) 3 { 4 int cases, i; 5 long long a, b; 6 scanf(%d, &cases); 7 for (i = 0; i < cases; i++) 8 { 9 scanf(% 2013 ( 28 ) ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp Compilation Error long long cin scanf Time Limit Exceeded 1: A 10 B 1 C 1 D 5 E 5 F 1 G II 5 H 30 1 2013 C 1 #include 2 int main(void) 3

More information

C/C++语言 - 运算符、表达式和语句

C/C++语言 - 运算符、表达式和语句 C/C++ Table of contents 1. 2. 3. 4. C C++ 5. 6. 7. 1 i // shoe1.c: # include # define ADJUST 7. 64 # define SCALE 0. 325 int main ( void ) { double shoe, foot ; shoe = 9. 0; foot = SCALE * shoe

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

C/C++ - 函数

C/C++ - 函数 C/C++ Table of contents 1. 2. 3. & 4. 5. 1 2 3 # include # define SIZE 50 int main ( void ) { float list [ SIZE ]; readlist (list, SIZE ); sort (list, SIZE ); average (list, SIZE ); bargragh

More information

《计算概论》课程 第十九讲 C 程序设计语言应用

《计算概论》课程 第十九讲  C 程序设计语言应用 计算概论 A 程序设计部分 字符数组与字符串 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn 字符数组的定义 #include int main() char a[10] = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ; for (int i = 0; i < 10; i++) cout

More information

untitled

untitled A, 3+A printf( ABCDEF ) 3+ printf( ABCDEF ) 2.1 C++ main main main) * ( ) ( ) [ ].* ->* ()[] [][] ** *& char (f)(int); ( ) (f) (f) f (int) f int char f char f(int) (f) char (*f)(int); (*f) (int) (

More information

untitled

untitled 1 DBF (READDBF.C)... 1 2 (filetest.c)...2 3 (mousetes.c)...3 4 (painttes.c)...5 5 (dirtest.c)...9 6 (list.c)...9 1 dbf (readdbf.c) /* dbf */ #include int rf,k,reclen,addr,*p1; long brec,erec,i,j,recnum,*p2;

More information

C++ 程序设计 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 1 CIRCLE 1 Circle 描述 编写一个圆类 Circle, 实现半径的输入 面积的计算和输出 输入 圆的半径 (double 类型 ) 输出 圆的面积 ( 保留小数点后两位 ) 样例输入 3 样例输出 28.27 提示 圆周率的取值需要比较精确, 以保证计算结果的精度 #include

More information

nooog

nooog C : : : , C C,,, C, C,, C ( ), ( ) C,,, ;,, ; C,,, ;, ;, ;, ;,,,, ;,,, ; : 1 9, 2 3, 4, 5, 6 10 11, 7 8, 12 13,,,,, 2008 1 1 (1 ) 1.1 (1 ) 1.1.1 ( ) 1.1.2 ( ) 1.1.3 ( ) 1.1.4 ( ) 1.1.5 ( ) 1.2 ( ) 1.2.1

More information

<4D F736F F F696E74202D20B5DA3135BDB25FB8DFBEABB6C8BCC6CBE32E BBCE6C8DDC4A3CABD5D>

<4D F736F F F696E74202D20B5DA3135BDB25FB8DFBEABB6C8BCC6CBE32E BBCE6C8DDC4A3CABD5D> 程序设计实习 (II): 算法设计 第十五讲高精度计算 通知 ACM 校内赛推迟 1 小时开赛 每周上机练习 (2 小时限时 ) 大作业 四色图 3 人一组, 不允许单人参加 http://www.botzone.org 1 次练习 +4 次比赛 Name Game Start Time 第四次比赛 ( 权重 40) fourcolours(no.4) 2012-06-02 06 02 22:00

More information

download.kaoyan.com_2006ÄêÌì½ò¹¤Òµ´óѧ¸ß¼¶ÓïÑÔ³ÌÐòÉè¼Æ£¨409£©¿¼ÑÐÊÔÌâ

download.kaoyan.com_2006ÄêÌì½ò¹¤Òµ´óѧ¸ß¼¶ÓïÑÔ³ÌÐòÉè¼Æ£¨409£©¿¼ÑÐÊÔÌâ 考生注意 : 本试卷共七大题, 满分 150 分 考试时间为 3 小时 ; 所有答案均写在答题纸上 ( 注明题号 ), 在此答题一律无效无效 一 选择题 ( 本题共 20 小题, 每小题 2 分, 满分 40 分 ) 1 char ch 1 2 A 0

More information

新版 明解C++入門編

新版 明解C++入門編 511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,

More information

NOWOER.OM m/n m/=n m/n m%=n m%n m%=n m%n m/=n 4. enum string x1, x2, x3=10, x4, x5, x; 函数外部问 x 等于什么? 随机值 5. unsigned char *p1; unsigned long *p

NOWOER.OM m/n m/=n m/n m%=n m%n m%=n m%n m/=n 4. enum string x1, x2, x3=10, x4, x5, x; 函数外部问 x 等于什么? 随机值 5. unsigned char *p1; unsigned long *p NOWOER.OM /++ 程师能 评估. 单项选择题 1. 下 描述正确的是 int *p1 = new int[10]; int *p2 = new int[10](); p1 和 p2 申请的空间 的值都是随机值 p1 和 p2 申请的空间 的值都已经初始化 p1 申请的空间 的值是随机值,p2 申请的空间 的值已经初始化 p1 申请的空间 的值已经初始化,p2 申请的空间 的值是随机值 2.

More information

《C语言程序设计》第2版教材习题参考答案

《C语言程序设计》第2版教材习题参考答案 教材 C 语言程序设计 ( 第 2 版 ) 清华大学出版社, 黄保和, 江弋编著 2011 年 10 月第二版 ISBN:978-7-302-26972-4 售价 :35 元 答案版本 本习题答案为 2012 年 2 月修订版本 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p = &a A. *p = *a B. p = *a C.p = &a D. *p =

More information

新・明解C言語入門編『索引』

新・明解C言語入門編『索引』 !... 75!=... 48 "... 234 " "... 9, 84, 240 #define... 118, 213 #include... 148 %... 23 %... 23, 24 %%... 23 %d... 4 %f... 29 %ld... 177 %lf... 31 %lu... 177 %o... 196 %p... 262 %s... 242, 244 %u... 177

More information

《C语言程序设计》教材习题参考答案

《C语言程序设计》教材习题参考答案 教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN:978-7-302-13599-9, 红色封面 答案制作时间 :2011 年 2 月 -5 月 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p=&a 2. 设已定义 int x,*p=&x;, 则下列表达式中错误的是 :B)&*x 3. 若已定义 int a=1,*b=&a;,

More information

Microsoft PowerPoint - string_kruse [兼容模式]

Microsoft PowerPoint - string_kruse [兼容模式] Strings Strings in C not encapsulated Every C-string has type char *. Hence, a C-string references an address in memory, the first of a contiguous set of bytes that store the characters making up the string.

More information

c_cpp

c_cpp C C++ C C++ C++ (object oriented) C C++.cpp C C++ C C++ : for (int i=0;i

More information

untitled

untitled 1 1.1 1.2 1.3 1.4 1.5 ++ 1.6 ++ 2 BNF 3 4 5 6 7 8 1.2 9 1.2 IF ELSE 10 1.2 11 1.2 12 1.3 Ada, Modula-2 Simula Smalltalk-80 C++, Objected Pascal(Delphi), Java, C#, VB.NET C++: C OOPL Java: C++ OOPL C# C++

More information

C/C++ - 文件IO

C/C++ - 文件IO C/C++ IO Table of contents 1. 2. 3. 4. 1 C ASCII ASCII ASCII 2 10000 00100111 00010000 31H, 30H, 30H, 30H, 30H 1, 0, 0, 0, 0 ASCII 3 4 5 UNIX ANSI C 5 FILE FILE 6 stdio.h typedef struct { int level ;

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc 2 5 8 11 0 13 1. 13 2. 15 3. 18 1 23 1. 23 2. 26 3. 28 2 36 1. 36 2. 39 3. 42 4. 44 5. 49 6. 51 3 57 1. 57 2. 60 3. 64 4. 66 5. 70 6. 75 7. 83 8. 85 9. 88 10. 98 11. 103 12. 108 13. 112 4 115 1. 115 2.

More information

C

C C 2017 3 14 1. 2. 3. 4. 2/95 C 1. 3/95 C I 1 // talkback.c: 2 #include 3 #include 4 #define DENSITY 62.4 5 int main(void) 6 { 7 float weight, volume; 8 int size; 9 unsigned long letters;

More information

C/C++ - 字符输入输出和字符确认

C/C++ - 字符输入输出和字符确认 C/C++ Table of contents 1. 2. getchar() putchar() 3. (Buffer) 4. 5. 6. 7. 8. 1 2 3 1 // pseudo code 2 read a character 3 while there is more input 4 increment character count 5 if a line has been read,

More information

新・解きながら学ぶC言語

新・解きながら学ぶC言語 330!... 67!=... 42 "... 215 " "... 6, 77, 222 #define... 114, 194 #include... 145 %... 21 %... 21 %%... 21 %f... 26 %ld... 162 %lf... 26 %lu... 162 %o... 180 %p... 248 %s... 223, 224 %u... 162 %x... 180

More information

新版 明解C言語入門編

新版 明解C言語入門編 328, 4, 110, 189, 103, 11... 318. 274 6 ; 10 ; 5? 48 & & 228! 61!= 42 ^= 66 _ 82 /= 66 /* 3 / 19 ~ 164 OR 53 OR 164 = 66 ( ) 115 ( ) 31 ^ OR 164 [] 89, 241 [] 324 + + 4, 19, 241 + + 22 ++ 67 ++ 73 += 66

More information

没有幻灯片标题

没有幻灯片标题 指针作为函数参数 : 原因 : 1 需要修改一个或多个值,( 用 return 语句不能解决问题 ) 2 执行效率的角度 使用方法 : 在函数原型以及函数首部中需要声明能够接受指针值的形参, 具体的写法为 : 数据类型 * 形参名 如果有多个指针型形参, 则用逗号分隔, 例如 : void swap(int *p1, int *p2) 它说明了形参 p1 p2 是指向整型变量的指针 在函数调用时,

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

9,, (CIP) /. :, ISBN T U767 CI P ( 2004 ) : 122 : / mail.whut.edu.c

9,, (CIP) /. :, ISBN T U767 CI P ( 2004 ) : 122 : /    mail.whut.edu.c 9,, (CIP) /. :, 2005.2 ISBN 7 5629 2097 4....T U767 CI P ( 2004 )003594 : 122 : 430070 http:/ / www.techbook.com.cn E-mail: yangxuezh@ mail.whut.edu.cn : : : 7871092 1/ 16 : 17 : 421 : 2005 2 1 : 2006

More information

C/C++ - 字符串与字符串函数

C/C++ - 字符串与字符串函数 C/C++ Table of contents 1. 2. 3. 4. 1 char C 2 char greeting [50] = " How " " are " " you?"; char greeting [50] = " How are you?"; 3 printf ("\" Ready, go!\" exclaimed John."); " Ready, go!" exclaimed

More information

Chap03

Chap03 算法分析与设计 Analysis and Design of Algorithm 第 9 次课 ( 动态规划法部分 ) 要点回顾 动态规划算法 动态规划法的基本思想 动态规划法的基本步骤 动态规划法的实例 矩阵连乘问题 动态规划法 基于备忘录的递归法 2 矩阵连乘问题的递归树 3 要点回顾 动态规划算法 动态规划法的基本思想 动态规划法的基本步骤 动态规划法的实例 矩阵连乘问题 动态规划法 基于备忘录的递归法

More information

Microsoft Word - ACL chapter02-5ed.docx

Microsoft Word - ACL chapter02-5ed.docx 第 2 章神奇的質數 2.1.1 什麼是質數 1 1 1 打下好基礎 - 程式設計必修的數學思維與邏輯訓練 1 1 0 10 2 3 5 7 4 6 8 9 10 4 10000 1229 1000 168 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131

More information

第2章 递归与分治策略

第2章  递归与分治策略 : 1. 2. 3. Strassen 4. 5. 6. 7. 8. 9... 2 T(n) = n T(n/2) T(n/2) T(n/2) T(n/2) 3 T(n) = n n/2 n/2 n/2 n/2 T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/4

More information

untitled

untitled CHAPTER 02 2 CHAPTER 2-1 2-4 2-2 2-5 2-3 2-6 2-1 2-1-1 2-2 02 int A[3] = {10, 20, 30; A[0] 10 A[1] 20 A[2] 30 int *pa[3], A[3]; C 3 pa pa[0]pa[1]pa[2] 3 A A[0]A[1]A[2] 3 A A[0] A + i A[i] A + i &A[i]*(A

More information

C/C++ 语言 - 循环

C/C++ 语言 - 循环 C/C++ Table of contents 7. 1. 2. while 3. 4. 5. for 6. 8. (do while) 9. 10. (nested loop) 11. 12. 13. 1 // summing.c: # include int main ( void ) { long num ; long sum = 0L; int status ; printf

More information

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3 浙江大学 C 程序设计及实验 试题卷 2002-2003 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:30-10:30 注意 : 答题内容必须写在答题卷上, 写在本试题卷上无效 一. 单项选择题 ( 每题 1 分, 共 10 分 ) 1. 下列运算符中, 优先级最低的是 A.

More information

3. 給 定 一 整 數 陣 列 a[0] a[1] a[99] 且 a[k]=3k+1, 以 value=100 呼 叫 以 下 兩 函 式, 假 設 函 式 f1 及 f2 之 while 迴 圈 主 體 分 別 執 行 n1 與 n2 次 (i.e, 計 算 if 敘 述 執 行 次 數, 不

3. 給 定 一 整 數 陣 列 a[0] a[1] a[99] 且 a[k]=3k+1, 以 value=100 呼 叫 以 下 兩 函 式, 假 設 函 式 f1 及 f2 之 while 迴 圈 主 體 分 別 執 行 n1 與 n2 次 (i.e, 計 算 if 敘 述 執 行 次 數, 不 1. 右 側 程 式 正 確 的 輸 出 應 該 如 下 : * *** ***** ******* ********* 在 不 修 改 右 側 程 式 之 第 4 行 及 第 7 行 程 式 碼 的 前 提 下, 最 少 需 修 改 幾 行 程 式 碼 以 得 到 正 確 輸 出? (A) 1 (B) 2 (C) 3 (D) 4 1 int k = 4; 2 int m = 1; 3 for (int

More information

untitled

untitled 1 7 7.1 7.2 7.3 7.4 7.5 2 7.1 VFT virtual 7.1 3 1 1. 2. public protected public 3. VFT 4. this const volatile 4 2 5. ( ) ( ) 7.1 6. no-static virtual 7.2 7. inline 7.3 5 3 8. this this 9. ( ) ( ) delete

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

《C语言程序设计》教材习题参考答案

《C语言程序设计》教材习题参考答案 教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN: 978-7-302-13599-9, 红色封面答案制作时间 :2011 年 2 月 -5 月一 选择题 1. 以下数组定义中, 错误的是 :C)int a[3]=1,2,3,4; 2. 以下数组定义中, 正确的是 :B) int a[][2]=1,2,3,4; 3. 设有定义 int a[8][10];,

More information

立 志 于 打 造 最 贴 近 考 生 实 际 的 辅 导 书 计 算 机 考 研 之 数 据 结 构 高 分 笔 记 率 辉 编 著 周 伟 张 浩 审 核 讨 论 群 :15945769

立 志 于 打 造 最 贴 近 考 生 实 际 的 辅 导 书 计 算 机 考 研 之 数 据 结 构 高 分 笔 记 率 辉 编 著 周 伟 张 浩 审 核 讨 论 群 :15945769 立 志 于 打 造 最 贴 近 考 生 实 际 的 辅 导 书 计 算 机 考 研 之 数 据 结 构 高 分 笔 记 率 辉 编 著 周 伟 张 浩 审 核 讨 论 群 :15945769 前 言 在 计 算 机 统 考 的 四 门 专 业 课 中, 最 难 拿 高 分 的 就 是 数 据 结 构 但 是 这 门 课 本 身 的 难 度 并 不 是 考 生 最 大 的 障 碍, 真 正 的 障 碍

More information

untitled

untitled 3 C++ 3.1 3.2 3.3 3.4 new delete 3.5 this 3.6 3.7 3.1 3.1 class struct union struct union C class C++ C++ 3.1 3.1 #include struct STRING { typedef char *CHARPTR; // CHARPTR s; // int strlen(

More information

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit 6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C51 6.1 C51 6.1.1 C51 C51 ANSI C MCS-51 C51 ANSI C C51 6.1 6.1 C51 bit Byte bit sbit 1 0 1 unsigned char 8 1 0 255 Signed char 8 11 128

More information

北京大学

北京大学 1 string 类 郭炜刘家瑛 北京大学程序设计实习 string 类 string 类是一个模板类, 它的定义如下 : typedef basic_string string; 使用 string 类要包含头文件 string 对象的初始化 : string s1("hello"); // 一个参数的构造函数 string s2(8, x ); // 两个参数的构造函数

More information

國立中山大學學位論文典藏.PDF

國立中山大學學位論文典藏.PDF 立 論 李 年 易 亂 領 不 數 量 更 更 易 了 靈 不 不 便 易 離 來 歷 烈 不 了 理 論 年 論 歷 說 論 度 離 度 歷 論 良 略 良 異 異 離 連 論 歷 不 不 異 論 行 行 度 切 履 來 行 論 更 論 論 離 異 度 歷 度 論 良 良 復 略 履 略 I 離 不 論 論 參 II 論 論 易 亂 領 不 數 量 更 更 易 了 靈 不 不 便 易 離 來 歷

More information

IO

IO 1 C/C++ C FILE* fscanf fgets fread fprintf fputs fwrite C++ ifstream ofstream >>

More information

ebook39-5

ebook39-5 5 3 last-in-first-out, LIFO 3-1 L i n e a r L i s t 3-8 C h a i n 3 3. 8. 3 C + + 5.1 [ ] s t a c k t o p b o t t o m 5-1a 5-1a E D 5-1b 5-1b E E 5-1a 5-1b 5-1c E t o p D t o p D C C B B B t o p A b o

More information

碩命題橫式

碩命題橫式 一 解釋名詞 :(50%) 1. Two s complement of an integer in binary 2. Arithmetic right shift of a signed integer 3. Pipelining in instruction execution 4. Highest and lowest layers in the TCP/IP protocol suite

More information

Chapter12 Derived Classes

Chapter12   Derived Classes 继 承 -- 派 生 类 复 习 1. 有 下 面 类 的 说 明, 有 错 误 的 语 句 是 : class X { A) const int a; B) X(); C) X(int val) {a=2 D) ~X(); 答 案 :C 不 正 确, 应 改 成 X(int val) : a(2) { 2. 下 列 静 态 数 据 成 员 的 特 性 中, 错 误 的 是 A) 说 明 静 态 数

More information

C++ 程式設計

C++ 程式設計 C C 料, 數, - 列 串 理 列 main 數串列 什 pointer) 數, 數, 數 數 省 不 不, 數 (1) 數, 不 數 * 料 * 數 int *int_ptr; char *ch_ptr; float *float_ptr; double *double_ptr; 數 (2) int i=3; int *ptr; ptr=&i; 1000 1012 ptr 數, 數 1004

More information

untitled

untitled 串 串 例 : char ch= a ; char str[]= Hello ; 串 列 ch=getchar(); scanf( %c,&ch); 串 gets(str) scanf( %s,str); 8-1 數 ASCII 例 : char ch= A ; printf( %d,ch); // 65 A ascii =0x41 printf( %c,ch); // A 例 : char ch;

More information

幻灯片 1

幻灯片 1 第一类换元法 ( 凑微分法 ) 学习指导 复习 : 凑微分 部分常用的凑微分 : () n d d( (4) d d( ); (5) d d(ln ); n n (6) e d d( e ); () d d( b); ); () d d( ); (7) sin d d (cos ) 常见凑微分公式 ); ( ) ( ) ( b d b f d b f ); ( ) ( ) ( n n n n d f

More information

第一章三角函数 1.3 三角函数的诱导公式 A 组 ( ) 一 选择题 : 共 6 小题 1 ( 易诱导公式 ) 若 A B C 分别为 ABC 的内角, 则下列关系中正确的是 A. sin( A B) sin C C. tan( A B) tan C 2 ( 中诱导公式 ) ( ) B. cos(

第一章三角函数 1.3 三角函数的诱导公式 A 组 ( ) 一 选择题 : 共 6 小题 1 ( 易诱导公式 ) 若 A B C 分别为 ABC 的内角, 则下列关系中正确的是 A. sin( A B) sin C C. tan( A B) tan C 2 ( 中诱导公式 ) ( ) B. cos( 第一章三角函数 1. 三角函数的诱导公式 A 组 一 选择题 : 共 6 小题 1 ( 易诱导公式 ) 若 A B C 分别为 ABC 的内角 则下列关系中正确的是 A. sin( A B) sin C C. tan( A B) tan C ( 中诱导公式 ) B. cos( B C) cos A D. sin( B C) sin A sin60 cos( ) sin( 0 )cos( 70 ) 的值等于

More information

A. Alice的车牌号

A. Alice的车牌号 Solution A. Alice 的车牌号 字符串匹配, 只要在所给字符串中查找是否出现 "13" 这个子串即可, 关键代码如下 bool judge(char str[]) return strstr(str, "13") == NULL; Code: #include #include #include #include

More information

C++ 程序设计 OJ4 - 参考答案 MASTER 2017 年 5 月 21 日 1

C++ 程序设计 OJ4 - 参考答案 MASTER 2017 年 5 月 21 日 1 C++ 程序设计 OJ4 - 参考答案 MASTER 2017 年 5 月 21 日 1 1 SWAP 1 Swap 题目描述 用函数模板的方式实现对不同数据类型的数组中的数据进行输入 从小到大排序和输出 使用如下主函数测试你的模板设计一个函数模板 Swap, 实现任意数据类型的两个数据的交换, 分别用 int 型 double 型和 char 型的数据进行测试 main 函数如下 : int main()

More information

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023) ( CIP) /. :, 2005. 2 ( ) ISBN 7-5624-3339-9.......... TP311. 1 CIP ( 2005) 011794 : : : : * : : 174 ( A ) :400030 : ( 023) 65102378 65105781 : ( 023) 65103686 65105565 : http: / /www. cqup. com. cn : fxk@cqup.

More information

Microsoft Word - well_game.doc

Microsoft Word - well_game.doc 智慧型系統控制 趙春棠老師 四技機電四甲 49422019 黃秉宏 井字遊戲並沒有什麼必勝的著法, 但只要適當的回應, 就可保持不敗 也 1 2 3 4 5 6 7 8 9 法則 手玩家的最佳著法其第一步最好下在四個角落 ( 即 2 4 6 8 號位置 ), 因為後手玩家除了下在中央的 5 號位置之外必敗 即使對手下了該位置, 只要回以馬步佈局或對角佈局也還有一半的勝算 先手玩家第一步的次佳選擇在

More information

上海市本科教学质量年度报告

上海市本科教学质量年度报告 上 海 市 本 科 教 学 质 量 年 度 报 告 数 据 内 涵 说 明 V2.0 版 上 海 市 教 委 高 教 处 上 海 喆 思 (2015.07.02) 目 录 一 基 本 统 计 挃 标 说 明... 4 二 挃 标 解 释... 4 1. 全 日 制 在 校 本 科 生 数 及 占 在 校 生 总 数 的 比 例 ( 学 年 )... 4 2. 当 年 本 科 招 生 与 业 总 数

More information

中航航空电子设备股份有限公司

中航航空电子设备股份有限公司 证 券 代 码 :600372 证 券 简 称 : 中 航 电 子 公 告 编 号 : 临 2015 029 中 航 航 空 电 子 系 统 股 份 有 限 公 司 关 于 签 署 增 资 框 架 协 议 暨 关 联 交 易 的 公 告 本 公 司 董 事 会 及 全 体 董 事 保 证 本 公 告 内 容 不 存 在 任 何 虚 假 记 载 误 导 性 陈 述 或 者 重 大 遗 漏, 并 对 其

More information

2003 1,,,,,,1902,1905 3, 1911,11, 4,641,, :,,,,, :,,,,,1930,,,, (1910 1977), (1903 1977) (1885 1967) 1936 4 3, 3 25 :, 1963,1 :,1972,497 :, 25,1937 3,

2003 1,,,,,,1902,1905 3, 1911,11, 4,641,, :,,,,, :,,,,,1930,,,, (1910 1977), (1903 1977) (1885 1967) 1936 4 3, 3 25 :, 1963,1 :,1972,497 :, 25,1937 3, (1848 1905), 1877 12,,, 1879 :,,,,,,,,,,,,?,,, (,1827 1902), 1891, : 267 2003 1,,,,,,1902,1905 3, 1911,11, 4,641,, :,,,,, :,,,,,1930,,,, (1910 1977), (1903 1977) (1885 1967) 1936 4 3, 3 25 :, 1963,1 :,1972,497

More information

C/C++语言 - 分支结构

C/C++语言 - 分支结构 C/C++ Table of contents 1. if 2. if else 3. 4. 5. 6. continue break 7. switch 1 if if i // colddays.c: # include int main ( void ) { const int FREEZING = 0; float temperature ; int cold_ days

More information

C

C C 2017 4 1 1. 2. while 3. 4. 5. for 6. 2/161 C 7. 8. (do while) 9. 10. (nested loop) 11. 12. 3/161 C 1. I 1 // summing.c: 2 #include 3 int main(void) 4 { 5 long num; 6 long sum = 0L; 7 int status;

More information

Microsoft PowerPoint - ds-1.ppt [兼容模式]

Microsoft PowerPoint - ds-1.ppt [兼容模式] http://jwc..edu.cn/jxgl/ HomePage/Default.asp 2 说 明 总 学 时 : 72( 学 时 )= 56( 课 时 )+ 16( 实 验 ) 行 课 时 间 : 第 1 ~14 周 周 学 时 : 平 均 每 周 4 学 时 上 机 安 排 待 定 考 试 时 间 : 课 程 束 第 8 11 12 章 的 内 容 为 自 学 内 容 ; 目 录 中 标 有

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 177 [P179] (1) - [P181] [P182] (2) - for [P183] (3) - switch [P184] [P187] [P189] [P194] 178 [ ]; : : int var; : int var[3]; var 2293620 var[0] var[1] 2293620

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 The BitCoin Scripting Language 交易实例 交易结构 "result": { "txid": "921a dd24", "hash": "921a dd24", "version": 1, "size": 226, "locktime": 0, "vin": [ ], "vout": [ ], "blockhash": "0000000000000000002c510d

More information

_汪_文前新ok[3.1].doc

_汪_文前新ok[3.1].doc 普 通 高 校 本 科 计 算 机 专 业 特 色 教 材 精 选 四 川 大 学 计 算 机 学 院 国 家 示 范 性 软 件 学 院 精 品 课 程 基 金 青 年 基 金 资 助 项 目 C 语 言 程 序 设 计 (C99 版 ) 陈 良 银 游 洪 跃 李 旭 伟 主 编 李 志 蜀 唐 宁 九 李 涛 主 审 清 华 大 学 出 版 社 北 京 i 内 容 简 介 本 教 材 面 向

More information

摘 要 就 一 个 游 戏 而 言, 对 于 参 与 者, 需 要 研 究 不 同 的 策 略 去 达 到 胜 利, 而 对 于 游 戏 设 计 者, 则 需 要 研 究 这 个 游 戏 的 平 衡 性 与 记 分 规 则 的 合 理 性, 并 不 断 去 调 整 它 们 在 本 文 中, 我 们

摘 要 就 一 个 游 戏 而 言, 对 于 参 与 者, 需 要 研 究 不 同 的 策 略 去 达 到 胜 利, 而 对 于 游 戏 设 计 者, 则 需 要 研 究 这 个 游 戏 的 平 衡 性 与 记 分 规 则 的 合 理 性, 并 不 断 去 调 整 它 们 在 本 文 中, 我 们 三 国 杀 游 戏 平 衡 性 与 记 分 规 则 合 理 性 分 析 报 告 摘 要 就 一 个 游 戏 而 言, 对 于 参 与 者, 需 要 研 究 不 同 的 策 略 去 达 到 胜 利, 而 对 于 游 戏 设 计 者, 则 需 要 研 究 这 个 游 戏 的 平 衡 性 与 记 分 规 则 的 合 理 性, 并 不 断 去 调 整 它 们 在 本 文 中, 我 们 将 站 在 游 戏 设

More information

C/C++ - 结构体、共用体、枚举体

C/C++ - 结构体、共用体、枚举体 C/C++ Table of contents 1. 2. 3. 4. 5. 6. 7. 8. 1 C C (struct) C 2 C C (struct) C 2 i // book.c: # include < stdio.h> # define MAX_ TITLE 41 # define MAX_ AUTHOR 31 struct book { char title [ MAX_ TITLE

More information

第5章修改稿

第5章修改稿 (Programming Language), ok,, if then else,(), ()() 5.0 5.0.0, (Variable Declaration) var x : T x, T, x,,,, var x : T P = x, x' : T P P, () var x:t P,,, yz, var x : int x:=2. y := x+z = x, x' : int x' =2

More information

期中考试试题讲解

期中考试试题讲解 一 选择题 ( 一 ) 1. 结构化程序设计所规定的三种基本结构是 C A 主程序 子程序 函数 B 树形 网形 环形 C 顺序 选择 循环 D 输入 处理 输出 2. 下列关于 C 语言的叙述错误的是 A A 对大小写不敏感 B 不同类型的变量可以在一个表达式中 C main 函数可以写在程序文件的任何位置 D 同一个运算符号在不同的场合可以有不同的含义 3. 以下合法的实型常数是 C A.E4

More information

Microsoft Word - C-pgm-ws2010.doc

Microsoft Word - C-pgm-ws2010.doc Information and Communication Technology 資訊與通訊科技 Loops (while/for) C 廻路 姓名 : 班別 : ( ) CS C Programming #1 Functions 函數 : 1 若 n=14, 求以下表示式的值 Expressions 表示式 Value 值 Expressions 表示式 Value 值 A 20 2 * (n /

More information

Microsoft Word - CPE考生使用手冊160524.docx

Microsoft Word - CPE考生使用手冊160524.docx 大 學 程 式 能 力 檢 定 (CPE) 考 生 使 用 手 冊 2016 年 5 月 24 日 這 份 手 冊 提 供 給 參 加 CPE 檢 定 考 試 的 考 生 內 容 包 含 考 試 環 境 的 使 用, 以 及 解 題 時 所 使 用 I/O 的 基 本 知 識 1. 如 欲 報 名 參 加 CPE 考 試, 請 先 於 CPE 網 站 完 成 帳 號 註 冊, 然 後 再 報 名 該

More information

C/C++ - 数组与指针

C/C++ - 数组与指针 C/C++ Table of contents 1. 2. 3. 4. 5. 6. 7. 8. 1 float candy [ 365]; char code [12]; int states [50]; 2 int array [6] = {1, 2, 4, 6, 8, 10}; 3 // day_mon1.c: # include # define MONTHS 12 int

More information

《C语言程序设计》教材习题参考答案

《C语言程序设计》教材习题参考答案 教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN: 978-7-302-13599-9, 红色封面 答案制作时间 :2011 年 2 月 -5 月 一 选择题 1 若已经定义 struct stu int a, b; student;, 则下列输入语句中正确的是 D)scanf( %d,&student.a); 2 若已有以下结构体定义, 则值为 2 的表达式是

More information

Ps22Pdf

Ps22Pdf ( 98 ) C ( ) ( )158 1998 C : C C C,,, C,, : C ( ) : : (, 100084) : : : 7871092 1/ 16 :18 25 :415 : 2000 3 1 2000 3 1 : ISBN 7 302 01166 4/ T P432 : 00016000 : 22 00 ( 98 ) 20 90,,, ;,,, 1994, 1998, 160,

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

(6) 要 求 付 款 管 理 员 从 预 订 表 中 查 询 距 预 订 的 会 议 时 间 两 周 内 的 预 定, 根 据 客 户 记 录 给 满 足 条 件 的 客 户 发 送 支 付 余 款 要 求 (7) 支 付 余 款 管 理 员 收 到 客 户 余 款 支 付 的 通 知 后, 检

(6) 要 求 付 款 管 理 员 从 预 订 表 中 查 询 距 预 订 的 会 议 时 间 两 周 内 的 预 定, 根 据 客 户 记 录 给 满 足 条 件 的 客 户 发 送 支 付 余 款 要 求 (7) 支 付 余 款 管 理 员 收 到 客 户 余 款 支 付 的 通 知 后, 检 2016 年 上 半 年 软 件 设 计 师 考 试 真 题 ( 下 午 题 ) 下 午 试 题 试 题 一 ( 共 15 分 ) 阅 读 下 列 说 明 和 图, 回 答 问 题 1 至 问 题 4, 将 解 答 填 入 答 题 纸 的 对 应 栏 内 说 明 某 会 议 中 心 提 供 举 办 会 议 的 场 地 设 施 和 各 种 设 备, 供 公 司 与 各 类 组 织 机 构 租 用 场

More information

校园之星

校园之星 sh d sh ji sh d sh ji sh d sh ji sh d sh ji sh d sh ji sh d sh ji sh d sh ji NO NO sh d sh ji NO sh d sh ji sh d sh ji sh d sh ji sh d sh ji sh d sh ji sh d sh ji sh d sh ji sh d sh ji sh d sh ji sh d

More information

Microsoft PowerPoint - 10 模板 Template.pptx

Microsoft PowerPoint - 10 模板 Template.pptx 模板 Tempalte 泛型编程的需要 Why Templates? 设想你对整数类型实现了一个排序算法 : void sort(int *is,int n); 用该函数可以对实 复数或工资单排序吗? 模板可以复用源代码 - 泛型编程. inline void Swap( int &x, int &y){ int t = x; x = y; y =t; inline void Swap(double

More information

递归函数的高效实现方法

递归函数的高效实现方法 递归函数的高效实现方法 赵建华 递归函数的适用范围和优缺点 分治法 把一个比较大的问题分解为若干个比较小的问题, 分别求解这些比较小的问题, 再综合得到原问题的解 如果比较小的问题和原问题具有同样的性质, 那么适用递归接法 要求最终能够把问题分解为能够直接解决的简单问题 优点 简洁 能够帮助思考 和问题的结构有对应关系 缺点 效率低下 递归 递归的定义 若一个对象部分地包含它自己, 或用它自己给自己定义,

More information

[改訂新版]C言語による標準アルゴリズム事典

[改訂新版]C言語による標準アルゴリズム事典 iii C 1991 SEND + MORE = MONEY C 100 2003 Java 2003 27 PC-9800 C BMP SVG EPS BMPSVG WindowsMacLinux Web iv int main() int main(void) EXIT_SUCCESS 0 https://github.com/okumuralab/ algo-c TEX TEX PDF PDF

More information

2015年计算机二级(C语言)模拟试题及答案(四)

2015年计算机二级(C语言)模拟试题及答案(四) 2016 年 计 算 机 二 级 (C 语 言 ) 模 拟 试 题 及 答 案 (4) 一 填 空 题 1 C 语 言 中 基 本 的 数 据 类 型 有 : 2 C 语 言 中 普 通 整 型 变 量 的 类 型 说 明 符 为, 在 内 存 中 占 字 节, 有 符 号 普 通 整 型 的 数 据 范 围 是 3 整 数 -35 在 机 内 的 补 码 表 示 为 4 执 行 下 列 语 句 int

More information

C++ 程序设计 OJ4 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 OJ4 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 OJ4 - 参考答案 MASTER 2019 年 5 月 3 日 1 1 MYQUEUE 1 MyQueue 题目描述 设计一个 MyQueue 类模板, 类模板说明如下 : template class MyQueue; template std::ostream & operator

More information

C++ 程序设计 实验 1 - 参考答案 MASTER 2017 年 5 月 21 日 1

C++ 程序设计 实验 1 - 参考答案 MASTER 2017 年 5 月 21 日 1 C++ 程序设计 实验 1 - 参考答案 MASTER 2017 年 5 月 21 日 1 1 简单图形 1 简单图形 输入图形的行数 ( 如下图 7 行 ), 输出如下图所示图形 * *** ***** ******* ***** *** * 2 1 简单图形 1 #inc lude 2 using namespace std ; 3 4 // 注意变量命名的方式 5 //

More information