
c/c++语言/数据结构
qiumin333
这个作者很懒,什么都没留下…
展开
-
括号的匹配(c语言数据结构)
Description 题意描述: 在算术表达式中,除了加、减、乘、除等运算外,往往还有括号。包括有大括号{},中括号[],小括号(),尖括号 对于每一对括号,必须先左边括号,然后右边括号;如果有多个括号,则每种类型的左括号和右括号的个数必须相等;对于多重括号的情形,按运算规则,从外到内的括号嵌套顺序为:大括号->中括号->小括号->尖括号。例如,{[()]},{()},{{}原创 2012-12-12 12:13:00 · 2673 阅读 · 1 评论 -
【模拟试题】进制转换(normal)
Description 请你编一程序实现两种不同进制之间的数据转换。 Input 输入数据共有三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16),第二行是一个n进制数,若n>10则用大写字母A~F表示数码10~15,并且该n进制数对应的十进制的值不超过1000000000,第三行也是一个正整数,表示转换之后的数的进制m(2≤m≤16)。 Output 输出仅原创 2012-12-16 13:06:41 · 1723 阅读 · 0 评论 -
The Twelve Days of Christmas
#include char *a; main(int t,int _,char* a) { return !0<t?t<3?main(-79,-13,a+ main(-87,1-_, main(-86,0,a+1)+a)):1,t<_? main(t+1,_,a):3, main(-94,-27+t,a)&&t==2?_<13? main(2,_+1,"%s %d %d\转载 2012-12-20 23:15:14 · 734 阅读 · 0 评论 -
堆排序
/*********************************************************************** 堆排序:1.数组按照完全二叉树的分层原理,即i为父节点则2i为左孩子,2i+1为右孩子。 2.排成大顶堆或者小顶堆。 3.将堆顶元素移走(将最大或最小移到数组末尾) 4.如此下去,就排成了一个有序序列 @author xie_cc QQ:767959原创 2016-10-11 20:54:41 · 303 阅读 · 0 评论 -
01背包,完全背包,多重背包
01背包 #include int c[101][1001]={0};//定义100个物品1000重量的总价值数组 void calcMaxValues(int n,int t_w) { int i,j; int w[101]={0},v[101]={0};//w单个物品的重量,v单个物品的价值 for(i=1;i<=n;i++){ scanf("%d%d",&w[i],&v[i])原创 2016-10-01 21:29:37 · 322 阅读 · 0 评论 -
速算24点
速算24点 Description 速算24点相信绝大多数人都玩过。就是随机给你四张牌,包括A(1),2,3,4,5,6,7,8,9,10,J(11),Q(12),K(13)。要求只用'+','-','*','/'运算符以及括号改变运算顺序,使得最终运算结果为24(每个数必须且仅能用一次)。游戏很简单,但遇到无解的情况往往让人很郁闷。你的任务就是针对每一组随机产生的四张牌,原创 2012-12-12 12:25:49 · 1462 阅读 · 0 评论 -
大数相加
我们都知道计算a+b,如果两个数非常的大,以至于long型也无法表示的时候,这个时候怎么办了,例如我要计算:12454541234554333334546533425324455+34213432354353245541312425654433556553233=? 或者个大的数相加的时候怎么办啊! 这个时候自然会想到数组了,源码如下: #include #include usin原创 2012-12-12 12:19:36 · 348 阅读 · 0 评论 -
计算1977!
这个数的阶乘的结果非常大,long型的范围可能搞不定了,自然要用到数组了,开始没有什么思路,想了很久,于是看看别人的代码吧!和别人一起讨论下改如何处理,好友L给我发来了个源码,如下: #include int mult(int num[],int len,int n) { long i,rem=0; for(i=0;i { rem=rem+num[i]*n; num[i]=原创 2012-12-12 12:21:34 · 1752 阅读 · 0 评论 -
关于c语言数据结构/kmp算法
一般常规会想到一下方法匹配字符串:int StrMatch ( char S [ ], char T [ ], int pos ) { int i = pos, j = 0; while ( S[i+j] != '\0'&& T[j] != '\0') if ( S[i+j] == T[j] ) j ++; else { i ++; j = 0; }原创 2012-12-12 12:05:26 · 706 阅读 · 0 评论 -
二叉排序树
1.头文件 #include #include typedef int State; struct TreeNode { State data; int num; TreeNode * leftNode; TreeNode * rightNode; }; TreeNode * CreateTreeNode(State d) { TreeNode * head =(TreeNode*原创 2016-10-05 20:51:46 · 397 阅读 · 0 评论