2011年9月3日

摘要: 头文件 定义 queue Q;Q.push(x); 无返回值,将元素x压入队列Q.pop(); 出队,无返回值Q.front(); 取队头元素,返回队头元素Q.back(); 取队尾元素,返回队尾元素Q.empty(); 判断队列是否为空,如果是空,返回1,否则返回0Q.size(); 返回队列中元素的个数#include #include using namespace std;int main(){ queue Q; if(Q.empty()) cout<<"true"<<endl; Q.push(3)... 阅读全文

posted @ 2011-09-03 10:17 continue_n 阅读(234) 评论(0) 推荐(0)

摘要: 头文件 定义 stack S;S.push(x) 无返回值,将元素x压栈S.pop(); 出栈,无返回值S.top(); 取栈顶元素,返回栈顶元素S.empty(); 判断栈是否为空,如果是空,返回1,否则返回0S.size(); 返回栈中元素的个数#include #include using namespace std;int main(){ stack S; if(S.empty()) cout<<"true"<<endl; S.push(3); S.push(2); S.push(1); cou... 阅读全文

posted @ 2011-09-03 10:16 continue_n 阅读(304) 评论(0) 推荐(0)


2011年8月11日

摘要: 1.定理:(带余除法)若有a,b两个整数,且b>0 ,则存在两个整数q,r 使得 a = b*q + r . (其中 0 <= r < b , 且q和r是唯一的)证明: 假设存在 q1和r1 也满足 a = b*q1 + r1 . 则把两式相减则有 b*(q-q1) + (r-r1) = 0; 化简得有b*(q-q1) = r1 - r . 因为q,q1是整数,所以 q-q1 也为整数 又因为 0 <= r1 < b , -b < -r <= 0 , 则 -b < r1-r < b. 得到的 -1 < (q-q1) < 1 ,所 阅读全文

posted @ 2011-08-11 19:10 continue_n 阅读(227) 评论(0) 推荐(0)


2011年8月10日

摘要: 二维背包问题:对于每件物品,具有两种不同的费用;选择这件物品必须同时付出这两种代价;对于每种代价都有 一个可付出的最大值(背包容量)。问怎样选择物品可以得到最大的价值。设这两种代价分别为代价1和代价2,第i件物品所需的两种代价分别为a[i]和 b[i]。两种代价可付出的最大值(两种背包容量)分别为V和U。物品的价值为w[i]。状态方程为 f[i][v][u]=max(f[i-1][v][u],f[i-1][v-a[i]][u-b[i]]+w[i])#include <stdio.h>#include <string.h>int Max(int a,int b){ ret 阅读全文

posted @ 2011-08-10 16:14 continue_n 阅读(225) 评论(0) 推荐(0)

摘要: #include <stdio.h>typedef struct NODE { int lc,rc; int grade; int first,mid,tail;}node;node s[600005];int gra[200005];int Max(int a,int b){return a>b?a:b;}void Maketree(int first,int tail,int at){ s[at].first = first; s[at].tail = tail; if( first == tail ) s[at].grade = gra[first]; else{ s[ 阅读全文

posted @ 2011-08-10 07:57 continue_n 阅读(122) 评论(0) 推荐(0)


2011年8月2日

摘要: HDU 1710 知道前序和中序求后序原来的做法是开了一个数组存放由前序和中序求出来的树,但是空间浪费很大,一直RE后来又想想,递归的时候就可以直接输出来了,不用开数组自己写出来的AC代码,感觉还不错,先收藏起来#include <stdio.h>int qs[1005],zs[1005];int n;int fun1(int left,int k,int right){for( ; left <= right ; left++){if( qs[k] == zs[left] ) break;}return left;}void fun2(int g,int left,int 阅读全文

posted @ 2011-08-02 20:07 continue_n 阅读(428) 评论(0) 推荐(0)


2011年7月29日

摘要: 快速排序:#include <stdio.h>#define MAX 500000int s[MAX];void Q_Sort(int start,int end){int i,j,t;if( start >= end ) return ;t = s[start];i = start;j = end;while( i < j){while( s[j] >= t && i < j){j--;}s[i] = s[j];while( s[i] <= t && i < j){i++;}s[j] = s[i];}s[i] = 阅读全文

posted @ 2011-07-29 08:39 continue_n 阅读(112) 评论(0) 推荐(0)

摘要: n表示物品的个数,weight[i]表示第i件物品的重,value[i]表示第i件物品的价值V为背包容量,s[]存放最优解一:01背包:每件物品只有一个,只能选或者不选for( i = 0 ; i < n ; i++){for( j = V ; j >= weight[i] ; j--){s[j] = Max(s[j],s[j-weight[i]]+value[i]);}}二:完全背包:每件物品有无限个初始化时要注意:如果要求恰好装满背包,那么在初始化时除了s[0]为0其它s[1..V]均设为-∞(求的是最大解,如果求的是最小解,则为∞) 如果并没有要求必须把背包装满,而是只希望价 阅读全文

posted @ 2011-07-29 08:39 continue_n 阅读(937) 评论(0) 推荐(0)


2011年7月27日

摘要: 关于string的一些函数学习,先收藏起来,忘记了可以看#include <iostream>#include <string>using namespace std;int main(){string str1 = "12345";string str2 = "a";str2 += "bcde";str1.assign(str2,0,3); //把str2中下标为0开始,的三个字符赋给str1;cout<<str1<<endl;//输出 abccout<<strlen(st 阅读全文

posted @ 2011-07-27 14:52 continue_n 阅读(317) 评论(1) 推荐(0)


2011年7月22日

摘要: #include <stdio.h>#include <math.h>#define MAX 1000000int s[MAX];void Prime(){int i, j;for( i = 4; i < MAX; i += 2)s[i] = 1;for( i = 3; i < sqrt(MAX); i += 2){if( s[i] == 0 ){for( j = i*i; j < MAX; j += i)s[j] = 1;}}}int main(){int i;Prime();for( i = 2 ; i < MAX ; i++){if( s[ 阅读全文

posted @ 2011-07-22 23:49 continue_n 阅读(470) 评论(0) 推荐(0)


博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3