摘要:
水题照题意模拟即可#include <stdio.h>#include <string.h>#define MAX 130char s[MAX];int main(){ int i,n,top,len; char temp[MAX],ch; scanf("%d",&n); getchar(); while(n--) { gets(temp); len=strlen(temp); if(len==0) { printf("Yes\n"); continue; } for(top=0,i=0; i<len; i++) { 阅读全文
摘要:
题意加算法描述:先给出T个团体,并给出每个团体有多少人,每个人的编号,然后所有团体一起排队,排成一条大队列,排队的原则是,一个成员加入,如果这个成员所在的团体已经有人在排队了,那么他就加到他所在团体的最后面,而不是整个大队列的最后。如果整个大队列中没有他的团体,也就是他是他的那个团体第一个来的人,那么他就要排在整个大队列的最后(当然,他成为了他这个团体的第一人,以后他的队友来了就可以排他后面)出队则是按大队列的顺序,从第一名开始出队的,也就是说,按排在前面的团体的人按顺序逐一出完队后下一个团体的人才有可能出队本题在写的过程中运用了大量映射的思想,并且本题本身是个队列数据结构的题目,且用到了两个 阅读全文
摘要:
//此题其实不是考查矩阵乘法的问题,只是借这个背景来考查栈的运用,注意处理一些细节即可#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;#define MAX 30struct matrix{int r,c; char e;}a[MAX];int n;char s[10000010],stack[10000010];int cmp(struct matrix p ,struct matrix q){ return p.e<q.e; }int main 阅读全文
摘要:
//算法描述,构建一个双向循环链表,不需要不存放数据的头指针,按照prior指针遍历则认为是逆时针,按照next指针遍历则认为是顺时针//prior是逆时针,next是顺时针#include <stdio.h>#include <stdlib.h>#define LEN sizeof(struct node)int N,k,m;struct node{ int num; struct node *prior,*next;};void print_link(struct node *L){ struct node *p; p=L; printf("%d\n&qu 阅读全文
摘要:
//完全自己写的代码,用链表写的,很多细节没有修改,明天再改,时间是0.544//关键是find_3和find_1和swap函数的使用,注意细节,注意有的内存是一定要free释放//掉的,注意指针的使用,有的是把指针的值传递过去,有的是把指针变量本身的地址传递//过去,两者完全不同,注意看#include <stdio.h>#include <string.h>#include <stdlib.h>#define LEN1 sizeof(struct card)#define LEN2 sizeof(struct list)#define MAX 52 st 阅读全文
摘要:
1. move a onto b在將a搬到b上之前,先將a和b上的積木放回原來的位置(例如:1就放回1的最開始位罝)2. move a over b在將a搬到b所在的那堆積木之上之前,先將a上的積木放回原來的位罝(b所在的那堆積木不動)3. pile a onto b將a本身和其上的積木一起放到b上,在搬之前b上方的積木放回原位4. pile a over b將a本身和其上的積木一起搬到到b所在的那堆積木之上//用链表实现,没有任何算法可言,完全就是模拟,感觉用数组来做代码能更短//由于用链表来做的原因,涉及到指针所以很多细节问题,实际上调试很久,指针的东西太久没写都忘记//了,以后要适当复习 阅读全文