
sdut
sdut训练题
成长的小牛233
不辜负每一份热爱
展开
-
树结构练习——判断给定森林中有多少棵树-并查集
#include #include #include int vis[100002];int find(int x){ int f=x,i; while(vis[f] != f) { f=vis[f]; } while(x != vis[x]) { i=vis[x]; vis[x]=f;原创 2016-12-04 03:02:46 · 412 阅读 · 0 评论 -
sdut 数据结构实验之二叉树六:哈夫曼编码
#include #include #include #include using namespace std;int main(){ char s[10000]; while(scanf("%s",s)!=EOF) { priority_queue ,greater > Q;//利用优先队列,从小到大排序 int len原创 2016-12-04 02:41:16 · 1690 阅读 · 2 评论 -
sdut 图的深度遍历
图的深度遍历Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic DiscussProblem Description请定一个无向图,顶点编号从0到n-1,用深度优先搜索(DFS),遍历并输出。遍历时,先遍历节点编号小的。Input输入第一行为整数n(0 < n < 100),表示数据的组数。 对于每组数据,第一行是两个整数k...原创 2016-12-02 02:59:11 · 663 阅读 · 0 评论 -
sdut 二叉排序树
二叉排序树Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic DiscussProblem Description二叉排序树的定义是:或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;原创 2016-12-02 02:35:09 · 594 阅读 · 0 评论 -
树结构练习——排序二叉树的中序遍历
树结构练习——排序二叉树的中序遍历Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic DiscussProblem Description在树结构中,有一种特殊的二叉树叫做排序二叉树,直观的理解就是——(1).每个节点中包含有一个关键值 (2).任意一个节点的左子树(如果存在的话)的关键值小于该节点的原创 2016-12-02 02:23:26 · 521 阅读 · 0 评论 -
sdut Message Flood
D - Message FloodTime Limit: 1500 MS Memory Limit: 65536 KB 64bit IO Format: %lld & %lluDescriptionWell, how do you feel about mobile phone? Your answer would probably be原创 2016-12-02 02:11:27 · 305 阅读 · 0 评论 -
sdut 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
第一次写BFS的题,从开始一脸懵逼到慢慢分析,期间没有看书没查博客,自己安静的做了四十分钟终于做出来了,满满的成就感,我很水,但是我很努力,Mr杰要努力!#include#include#include#includeusing namespace std;int map[1000][100];queue q;int k,m,t,u,v,to[1000],vis[1000];v原创 2016-11-23 16:43:34 · 444 阅读 · 0 评论 -
数据结构实验之数组三:快速转置
#include#includestruct node{ int x,y,v;}a[100000];int cmp(node a,node b){ return a.x<b.x;}int main(){ int m,n,t; while(~scanf("%d%d%d",&m,&n,&t)) { for(int i=0;i<t原创 2016-11-23 12:55:37 · 914 阅读 · 0 评论 -
数据结构实验之数组二:稀疏矩阵
#includestruct node{ int x,y,v;}a[100000];int main(){ int m,n,t; while(~scanf("%d%d%d",&m,&n,&t)) { for(int i=0;i<t;++i) { scanf("%d%d%d",&a[i].x,&a[i]原创 2016-11-23 12:51:21 · 521 阅读 · 0 评论 -
数据结构实验之栈六:下一较大值(二)
#include #include using namespace std;struct node{ int data; int next;//记录下一个元素死亡值 int pos;//用来记录每个元素的位置*/} a[100001],val[100000];int main(){ int t; while(~scanf("%d",&t))原创 2016-11-22 13:08:41 · 575 阅读 · 0 评论 -
数据结构实验之串一:KMP简单应用
#include#includeint next[1000000];char str[1000000],substr[1000000];void getnext(){ int i=0,j=-1; next[0]=-1; while(substr[i]!='\0') { if(j==-1||substr[i]==substr[j])原创 2016-11-21 19:30:44 · 1338 阅读 · 0 评论 -
数据结构实验之排序七:选课名单(卡内存的一道题。。坑)
RE。。。带更正#include#includeusing namespace std;#include#includestruct people{ char name[100]; int sum_class; int cl[2005];}a[40000],b[40000];int cmp(people a,people b){ char原创 2016-11-21 19:07:57 · 775 阅读 · 0 评论 -
数据结构实验之排序二:交换排序
手懒不想写。。。转自http://blog.youkuaiyun.com/godsight/article/details/52150172#includeusing namespace std;int a[100100];int b[100100];int cnta,cntb;void qsort(int *p,int n){ if(n<=1)return; int i=转载 2016-11-21 14:07:21 · 873 阅读 · 0 评论 -
交叉排序
#include#includeint n;int b[50000],a[50000],c[50000];int main(){ while(~scanf("%d",&n)) { int l=0,p=0; for(int i=1; i<=n; i++) { scanf("%d",&a[i]);原创 2016-11-21 13:19:14 · 437 阅读 · 0 评论 -
数据结构实验之排序六:希尔排序
#include#includeint n;int b[50000],a[50000];void shell(int a[],int dk){ for(int i=dk; i<n; i++) { for(int j=i-dk; j>=0; j-=dk) { if(a[j]>a[j+dk])原创 2016-11-21 13:03:00 · 656 阅读 · 2 评论 -
sdut 数据结构实验之排序三:bucket sort
一开始这种做法超时:#include int b[5000000],a[5000000],n,ans;void merge_sort(int *a,int *b,int x,int y){ if(y-x>1) { int m=x+(y-x)/2;//中间点的坐标 int p=x,q=m,i=x; merge_sort(a,原创 2016-11-21 12:39:28 · 1202 阅读 · 0 评论 -
sdut 数据结构实验之排序五:归并求逆序数
#include#includelong long ans;int a[100010],temp[100010];void merge(int s1,int e1,int s2,int e2){ int p1,p2,p; p=0;p1=s1;p2=s2; while(p1<=e1&&p2<=e2) { if(a[p1]<=a[p2]原创 2016-11-21 12:06:00 · 487 阅读 · 0 评论 -
sdut 双向队列(STL)
dequeq;//定义一个双向队列q,类型为long long q.push_front(a);//将a从队首插入队列 q.push_back(a);//将a从队尾插入队列 q.pop_front();//队首弹掉一个元素 q.pop_back();//队尾弹出一个元素 a=q.front();//返回队首元素 a=q.back();//原创 2016-11-20 17:15:11 · 492 阅读 · 0 评论 -
SDUT 双向队列(队列)
#include#include#include#includeusing namespace std;int main(){ int a[30000],n,m=11000,data; int l=0,r=m,i=0; cin>>n; string str; for(int j=1;j<=n;j++) { cin>>s原创 2016-11-20 11:22:47 · 404 阅读 · 0 评论 -
sdut 数据结构实验之栈四:括号匹配
数据结构实验之栈四:括号匹配Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic DiscussProblem Description 给你一串字符,不超过50个字符,可能包括括号、数字、字母、标点符号、空格,你的任务是检查这一串字符中的( ) ,[ ],{ }是否匹配。Input 输入数据有多组,处理到文原创 2016-11-17 08:43:19 · 481 阅读 · 0 评论 -
sdut 最少拦截系统
最少拦截系统Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic DiscussProblem Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导原创 2016-11-13 21:24:55 · 585 阅读 · 0 评论 -
sdut 懒虫小鑫
懒虫小鑫Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic DiscussProblem Description小鑫是个大懒虫,但是这一天妈妈要小鑫去山上搬些矿石去城里卖以补贴家用。小鑫十分的不开心。不开心归不开心,小鑫还是要做这件事情的。我们把这个事情简化一下。有n块矿石,设第i块矿石由两个数字wi原创 2016-11-13 21:22:36 · 798 阅读 · 0 评论 -
sdut 马的走法
马的走法Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic DiscussProblem Description在一个4*5的棋盘上,马的初始位置坐标(纵 横)位置由键盘输入,求马能返回初始位置的所有不同走法的总数(马走过的位置不能重复,马走“日”字)。如果马的初始位置坐标超过棋盘的边界,则输出ERROR转载 2016-11-13 21:20:32 · 481 阅读 · 0 评论 -
sdut 活动选择问题
活动选择问题Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic DiscussProblem Description sdut 大学生艺术中心每天都有n个活动申请举办,但是为了举办更多的活动,必须要放弃一些活动,求出每天最多能举办多少活动。Input 输入包括多组输入,每组输入第一行为原创 2016-11-13 21:16:00 · 883 阅读 · 0 评论 -
sdut 删数问题
删数问题Problem Description 键盘输入一个高精度的正整数n(≤100位),去掉其中任意s个数字后剩下的数字按照原来的左右次序组成一个新的正整数。编程对给定的n与s,寻找一种方案,使得剩下的数字组成的新数最小。Input 输入有多组 每组包括原始数n,要去掉的数字数s;Output 输出去掉s个数后最小的数Examp原创 2016-11-13 21:13:47 · 566 阅读 · 0 评论 -
sdut 装船问题
装船问题Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic DiscussProblem Description王小二毕业后从事船运规划工作,吉祥号货轮的最大载重量为M吨,有10种货物可以装船。第i种货物有wi吨,总价值是pi。王小二的任务是从10种货物中挑选若干吨上船,在满足货物总重量小于等于M的前提下,运走的货物原创 2016-11-13 21:09:28 · 679 阅读 · 0 评论 -
sdut 数字三角形问题
数字三角形问题Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic DiscussProblem Description给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。 对于给定的由n行数字组成的数字三角形,计算从三角形的原创 2016-11-13 21:06:41 · 662 阅读 · 0 评论 -
sdut 青蛙过河
青蛙过河Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic DiscussProblem Description1)一条小溪尺寸不大,青蛙可以从左岸跳到右岸,在左岸有一石柱L,石柱L面积只容得下一只青蛙落脚,同样右岸也有一石柱R,石柱R面积也只容得下一只青蛙落脚。 2)有一队青蛙从小到大编号:1,2,…,原创 2016-11-13 20:59:41 · 640 阅读 · 0 评论 -
sdut 汉诺塔系列2
汉诺塔系列2Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic DiscussProblem Description用1,2,...,n表示n个盘子,称为1号盘,2号盘,...。号数大盘子就大。经典的汉诺塔问题经常作为一个递归的经典例题存在。可能有人并不知道汉诺塔问题的典故。汉诺塔来源于印度传说的一个故事,上原创 2016-11-13 19:57:10 · 795 阅读 · 0 评论 -
sdut 汉诺塔系列1
#include #include using namespace std;int main(){int n; int t; cin>>t; while(t--) { cin>>n; cout<<(long long)pow(3.0,n)<<endl; } return 0;}Time Limit: 1000MS Memory Lim原创 2016-11-13 19:34:08 · 871 阅读 · 0 评论 -
sdut 区间覆盖问题
区间覆盖问题Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic DiscussProblem Description 用i来表示x坐标轴上坐标为[i-1,i]的长度为1的区间,并给出n(1≤n≤200)个不同的整数,表示n个这样的区间。现在要求画m条线段覆盖住所有的区间,条件是:每条线段可以任意长转载 2016-11-13 19:32:03 · 477 阅读 · 0 评论 -
链表去重操作-两种方法的实现
#include#includetypedef struct list{ int data; list *next;}List;void create_list(list *&head,int len){ list *p=head; for(int i=0;i<len;i++) { list *pnew=(list*)malloc原创 2016-11-13 15:31:51 · 6112 阅读 · 0 评论 -
顺序表应用1:多余元素删除之移位算法
顺序表应用1:多余元素删除之移位算法Time Limit: 1000MS Memory Limit: 650KBSubmit Statistic DiscussProblem Description一个长度不超过10000数据的顺序表,可能存在着一些值相同的“多余”数据元素(类型为整型),编写一个程序将“多余”的数据元素从顺序表中删除,使该表由一个“非纯表”(值相同原创 2016-11-11 12:31:52 · 386 阅读 · 0 评论 -
sdut 走迷宫
走迷宫Time Limit: 1000MS Memory limit: 65536K题目描述一个由n * m 个格子组成的迷宫,起点是(1, 1), 终点是(n, m),每次可以向上下左右四个方向任意走一步,并且有些格子是不能走动,求从起点到终点经过每个格子至多一次的走法数。输入 第一行一个整数T 表示有T 组测试数据。(T <= 110)对于每组测试数据:第一行两个整数n, m...原创 2016-11-10 01:30:18 · 840 阅读 · 0 评论 -
sdut 取数字问题(深搜,动态规划)
/*首先看见这题想到的就是DFS但是求的是最短路径因此可以利用BFS,但是BFS学的太渣了,还是用动态规划来试试!dp[i][j]表示走到第i行j列时候的路径dp[i][j]=min(dp[i-1][j],dp[i][j-1])+a[i][j];但是这样写的缺陷是不能找出最小正整数的路径#include#include#includeusing namespac原创 2016-11-10 01:23:24 · 1122 阅读 · 0 评论 -
hdu1176 免费馅饼 动态规划 二维数组实现
免费馅饼Time Limit: 1000MS Memory Limit: 32768KBSubmit Statistic DiscussProblem Description都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内。馅饼如果掉在了地上原创 2016-11-10 00:04:28 · 450 阅读 · 0 评论 -
sdut 最长公共子序列问题
Problem Description从一个给定的串中删去(不一定连续地删去)0个或0个以上的字符,剩下地字符按原来顺序组成的串。例如:“ ”,“a”,“xb”,“aaa”,“bbb”,“xabb”,“xaaabbb”都是串“xaaabbb”的子串。(例子中的串不包含引号。) 编程求N个非空串的最长公共子串的长度。限制:2Input文件第1行是一个整数T,表示测试数原创 2016-11-08 19:57:38 · 1927 阅读 · 1 评论 -
sdut2056不敢死队问题
#include int main( void ){ int n; while(scanf("%d",&n),n) { int i = 0, m=5, p,ans,l=0; // scanf("%d", &n); //n总人数,m步长 while( ++i <= n ) { p = i * m; while (p原创 2016-11-06 15:16:21 · 662 阅读 · 0 评论 -
sdut2057金牌、银牌、铜牌
#include #include #include struct node{ char name[25]; int data; struct node *next;};void pd(struct node *&p,int bj){ while(p && p->data == bj) { printf(" %s",p->n原创 2016-11-06 15:15:26 · 844 阅读 · 0 评论 -
sdut2053整理音乐
#include#includeusing namespace std;struct st{ char name[10]; int score;};int cmp(struct st a,struct st b){ return a.score>b.score;}int main(){ struct st q[10000]; int s,原创 2016-11-06 15:14:50 · 439 阅读 · 0 评论