- 博客(19)
- 资源 (11)
- 收藏
- 关注
转载 Deque双端队列容器
一、基本原理 deque的元素数据采用分块的线性结构进行存储,如图所示。deque分成若干线性存储块,称为deque块。块的大小一般为512个字节,元素的数据类型所占用的字节数,决定了每个deque块可容纳的元素个数。所有的deque块使用一个Map块进行管理,每个Map数据项记录各个deque块的首地址。Map是deque的中心部件,将先于deque块,依照deque元素的个数
2014-09-10 14:09:55 939
转载 NULL, NUL, EOF, '\0'区别
NULL is a macro defined in several standard headers, 0 is an integer constant, '\0' is a character constant, and nul is the name of the character constant. All of these are not interchangeable:NULL
2014-09-06 12:20:19 1004
原创 九度 OJ 题目1153:括号匹配问题
题目描述:在某个字符串(长度不超过100)中有左括号、右括号和大小写字母;规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。写一个程序,找到无法匹配的左括号和右括号,输出原来字符串,并在下一行标出不能匹配的括号。不能匹配的左括号用"$"标注,不能匹配的右括号用"?"标注.输入: 输入包括多组数据,每组数据一行,包含一个字符串,只包含
2014-07-28 14:05:56 1397
原创 九度 OJ 题目1366:栈的压入、弹出序列
题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。输入:每个测试案例包括3行:第一行为1个整数n(1第二行包含n个整数,表示栈的压入顺序。第三行包含n个
2014-07-28 13:58:07 734
原创 二进制按位翻转
把一个32位整数按位反转,即第1位转到第32位,第2位转到第31位,依次下去。算法实现: 0XAAAAAAAA之类的称为掩码第一行以1位为一单元,奇偶单元进行交换; (交换32位整数的奇数位和偶数位)第二行以2位为一单元,奇偶单元进行交换;第三行以4位为一单元,奇偶
2014-07-27 21:39:34 1737
原创 棋盘
问题描述:棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下或向右。同时在棋盘上的任一点有一个对方的马(如图中的C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点。例如图中C点上的马可以控制9个点。卒不能走到对方马的控制点。棋盘用坐标表示,A点坐标(0,0)、B点坐标(n, m) (n,m为不超过20的整数,并由键盘输入),同样马的位置坐标C是需要给出的(C≠A,且C≠
2014-07-27 21:31:49 861
原创 打印1到最大的n位数
1.#include #include #include void printNumber(char *number){ int i; for (i=0; number[i]!='\0' ; ++i) { if (number[i] != '0') { break; } }/* for (; number[i]!='\0'; ++i) { pri
2014-07-27 21:30:01 623
原创 大整数因子
#include #include #define N 31void printFactor(int *factor, int numOfFactor){ int i; if (0 == numOfFactor) { printf("none\n"); } else { for (i=0; i<numOfFactor-1; ++i) { printf("
2014-07-27 21:28:21 968
原创 大数阶乘
#include #define N 2700int main(void){ int n; while (scanf("%d", &n) != EOF) { int i, k, tmp, carry; int cnt = 0; /*结果的位数*/ int A[N] = {1}; /*初始值为1*/ for (k=2; k<=n; ++k) {
2014-07-27 21:27:20 742
原创 大数进制转化
1.#include #include #define N 1000void print_result(int *num, int count){ int i; for(i=count-1; i>=0; --i) { printf("%d", num[i]); } printf("\n"); }void convert(int *integer, int le
2014-07-27 21:27:17 674
原创 大数浮点数加法
大数—>字符串输入—>字符串—>整型数组—>从整型数组的最低位向高位进行进位加法—>将整型数组忽略前导/后缀0输出测试数据1. 0.0+0.0=0.02. 00007.1+0.9=8.03. 7.000000+8.0=14.04. 8.00001+1.99999=10.0 详细过程:100.65541.455整数部分:0010000……00
2014-07-27 21:22:37 1773
原创 大数相乘
#include #include #include #define N 100void printResult(int *C, int n){ int i; for (i=0; i<n && C[i]==0; ++i) /*跳过头部的0元素*/ ; for (; i<n; ++i) { printf("%d", C[i]); } printf("\n");
2014-07-27 21:20:45 643
原创 全排列
abc 的全排列: abc, acb, bac, bca, cab, cba*23 的全排列: 123, 132, 213, 231, 312, 321*http://blog.csdn.net/morewindows/article/details/7370155?reload*剑指offer P155,此外全排列还可以用以解决8皇后问题,对于按照一定要求摆放若干数字,都可以考虑用全
2014-07-27 21:10:15 754
原创 最长公共子串 & 最长公共子序列
最长公共子串(Longest-Common-Substring,LCS) dp[i][j]:表示strA[0-i]与strB[0-j]的最长公共子串长度如果 strA[i] != strB[j],dp[i][j] = 0;如果 strA[i] == strB[j],dp[i][j] = dp[i-1][j-1] +1;初始化:如果strA[i] == strB[j],i=
2014-07-27 21:05:54 616
原创 字符串排序
编写一个程序,将输入字符串中的字符按如下规则排序。规则1:英文字母从A到Z排列,不区分大小写。如,输入:Type 输出:epTy规则2:同一个英文字母的大小写同时存在时,按照输入顺序排列。如,输入:BabA 输出:aABb规则3:非英文字母的其它字符保持原来的位置。如,输入:By?e 输出:Be?y样例:输入:
2014-07-27 20:42:42 1088
原创 大数加减法
在计算机中,由于处理器位宽限制,只能处理有限精度的十进制整数加减法,比如在32位宽处理器计算机中,参与运算的操作数和结果必须在-231~231-1之间。如果需要进行更大范围的十进制整数加法,需要使用特殊的方式实现,比如使用字符串保存操作数和结果,采取逐位运算的方式。如下:9876543210 + 1234567890 = ? 让字符串 num1="9876543210", 字符串 num2
2014-07-27 16:53:18 944
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人