- 博客(16)
- 资源 (5)
- 收藏
- 关注
原创 图的邻接矩阵建立以及遍历方法
//图的邻接矩阵构造方法,以及DFS,BFS操作;#include#include#includeusing namespace std;#define Max 20int visited[20];typedef struct { char vex[Max]; int vexs[Max][Max]; int vexnum,arcnum;}MGraph;int L
2015-10-27 20:47:05 1437
原创 最长公共子串
上次经过dp解决公共子序列,然后找到同类型,最长公共子串,顾名思义,公共子串是连续的序列,做法和公共子序列相似,不过在不相等时要将前面计零,然后在判断中每次更新最大的子串,来看状态转移方程就差不多了;X[i] == Y[j],dp[i][j] = dp[i-1][j-1] + 1X[i] != Y[j],dp[i][j] = 0初始化i=0||j==0时,dp[i][j]=0;
2015-10-24 22:51:23 386
原创 HDU1412
给你两个集合,要求{A} + {B}.注:同一个集合中不会有两个相同的元素. Input每组输入数据分为三行,第一行有两个数字n,m(0 Output针对每组数据输出一行数据,表示合并后的集合,要求从小到大输出,每个元素之间有一个空格隔开. Sample Input1 212 31 211 2 Sample Outp
2015-10-24 17:33:53 327
原创 HDU2035
都说是水题,可让我长姿势了,直接计算肯定不可能,10000^10000得多么大,所以百度了一下,发现了快速幂取模算法,加以推至 每次取余。#includeint main(){ int m,n; while(scanf("%d%d",&m,&n),m,n) { int sum=1; for(int i=1;i<=n;i++) sum=(sum*m)%1000; prin
2015-10-22 18:35:53 301
原创 HDU2147
本题为巴什博弈的变形,在一个m*n的棋盘内,从(1,m)点出发,每次可以进行的移动是:左移一,下移一,左下移一。然后kiki每次先走,判断kiki时候会赢(对方无路可走的时候)。题意大致如此,由1*1的方格可以得知 先手必输,由此绘图可知,如果第n*1个为当前选手的位置则必败由此绘图由规律我们看出来必输点的坐标均为(奇数,奇数);所以可以得出规律,只要方格中m或者n为偶数,先手必胜
2015-10-22 17:46:44 814 1
原创 HDU1851
巴什博弈:只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,那么先取者再拿走m+1-k个,结果
2015-10-22 17:15:16 371
原创 HDU2098
本题 学习到减少循环次数,当使用math.h头文件时 ,c++交不上 #include#includeint juge(int n){ int i; for(i=2;i<=sqrt(n);i++) { if(n%i==0) return 0; } return 1; }int mai
2015-10-21 21:24:15 290
原创 HDU2099
一道小小的 水题 ,PE了很多次 ,原来是 自动补零错了 ,也学会了printf中 printf("%02d",a[i]);可以在单个位数前自动补零!#includeint main(){ int m,n; int a[1001]; int count; while(scanf("%d%d",&m,&n),m,n) { int x=m*1
2015-10-21 21:05:32 315
原创 HDU1021
水题但是是极好的题,让思路多了一种,就是找规律There are another kind of Fibonacci numbers: F(0) = 7, F(1) = 11, F(n) = F(n-1) + F(n-2) (n>=2). InputInput consists of a sequence of lines, each containing an int
2015-10-21 18:04:30 1607
原创 最长公共子序列问题
dp理解的一直不是很透彻,所以从最基础开始,就是最长公共子序列。这道题的dp思想很容易懂;当前字符的比较是基于前面比较的基础上。所以根据图可哟看出来然后写出状态转移方程简单的例题就是杭电acm的1159#include#includeint dp[5005][5005];char a[5005],b[5005];int max(int a,int b){
2015-10-21 17:14:43 311
原创 HDU2018
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?1 12 23 34 45 66 9由规律可知 四年开始F(N)=F(N-1)+F(N-3);#includeint main(){ int n; int a[60]; int i; while(scanf
2015-10-20 17:51:36 285
原创 HDU1018
阶乘位数问题,用传统的递归或者暴力不可能提交,然后上网查了查,长了姿势!解法一: M = log10^1+log10^2+log10^3...+log10^n 循环求和,就能算得M值,该M是n!的精确位数。#include#includeint main(){ int t,n; int i; double num; scanf("%
2015-10-20 17:34:54 274
原创 HDU1032
本题实乃水题一个,但是wr了很多次,在c和c++徘徊后,发现原因在于c忘了加判断结束条件,而c++代码却过了。经过测试发现 while(cin〉〉x)中有EOF结束条件。也算是长知识了c++#include using namespace std;int main(){ int a,b,t,i,max; while(cin >> a >> b)
2015-10-20 16:55:24 991
原创 STL库中 队列的应用
#include#include//stl中队列的应用using namespace std;int main(){ queueQ;//生成存储int型的队列 int i; for(i=1;i<=5;i++) Q.push(i);//将元素放进队列; printf("%d\n",Q.size());//输出队列的大小; printf("%d ",Q.front())
2015-10-19 19:01:06 462
原创 STL库中,栈的应用
#include#include//栈标准库//利用STL库进行栈的基本操作using namespace std;//使用存储空间int main(){ stackS;//生成栈S; int i; int n=5; for(i=0;i<5;i++) S.push(i);//栈的压入操作; int size; size=S.size(); printf("%d\n
2015-10-19 18:00:33 447
原创 二叉树的基本构造及遍历方法
#include#include#include#includeusing namespace std;typedef struct node{ char data; struct node *Lchild; struct node *Rchild;}Bt_Tree,*Tree;void Init_Tree(Tree &tree){ char ch; scanf
2015-10-17 16:38:16 127
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人