移动小球
来源:互联网 发布:nc 发送数据 编辑:程序博客网 时间:2024/04/28 05:02
你有一些小球,从左到右依次编号为1,2,3,…,n,
你可以执行两种指令。其中A X Y表示把小球X移动到小球Y左边,B X Y表示把小球X移动到小球Y右边。指令保证合法,即X不等于Y。
输入 小球个数n。指令条数m和m条指令,注意,1≤n≤500000,0≤m≤100000。
输出 从左到右输出最后的小球序列。
样例输入
6 2
A 1 4
B 3 5
样例输出
你可以执行两种指令。其中A X Y表示把小球X移动到小球Y左边,B X Y表示把小球X移动到小球Y右边。指令保证合法,即X不等于Y。
输入 小球个数n。指令条数m和m条指令,注意,1≤n≤500000,0≤m≤100000。
输出 从左到右输出最后的小球序列。
样例输入
6 2
A 1 4
B 3 5
样例输出
2 1 4 5 3 6
# include<stdio.h># include<stdlib.h>#define MAXBALL 500000#define MAXCOM 100000typedef struct ball{int num; struct ball * next;} Ball;int main(void){int n, m, x, y, i;Ball * head, *p, *q;Ball *px, *prex, *py, *prey;//prex指向x前面的那个数, px指向xchar type[5];scanf("%d%d", &n, &m);//输入小球个数n和指令条数mif(n>MAXBALL || m>MAXCOM){ printf("error!\n"); exit(1);} head = (Ball*)malloc(sizeof(Ball));//建立顺序链表head->num = 0;head->next = NULL;q = head;for(i=0; i<n; i++){ p = (Ball*)malloc(sizeof(Ball)); p->num = i+1; q->next = p; q=p;}q->next = NULL;for(i=0; i<m; i++){prex = prey = head;px = prex->next;py = prey->next;scanf("%s%d%d", type,&x, &y);if(x==y){ printf("error~!\n"); exit(1);}else{ while(px->num != x) //找到x的位置,使px指向x { prex = px; px = prex->next; } while(py->num != y)//找到y的位置,使py指向y { prey = py; py = prey->next; } if(type[0]=='A') //按指令移动小球 { prex->next = px->next; prey->next = px; px->next = py; } else if(type[0]=='B') { prex->next = px->next; px->next = py->next; py->next = px; }}} p = head->next;//输出移动后的结果while(p){ printf("%d ", p->num); p = p->next;} printf("\n"); while(head)//释放动态分配的内存{ p = head; head = head->next; free(p);} return 0;}
随机指令生产器
# include<stdio.h># include<stdlib.h>//rand()和srand()需要# include<time.h> //time()需要int n = 100, m = 100000;double random() //生成[0,1]之间的均匀随机数{ return (double)rand() / RAND_MAX;}int random(int m) //生成[0, m-1]之间的均匀随机数{ return (int)(random()*(m-1)+0.5);}int main(void){srand(time(NULL));//初始化随机数种子 printf("%d %d\n", n, m);for(int i=0; i<m; i++){ if(rand()%2==0) printf("A"); else printf("B");//随机指令种类 int X, Y; for(;;) { X = random(n)+1; Y = random(n)+1; if(X!=Y)break;//只有X和Y不相等才是合法的 } printf(" %d %d\n", X, Y);} return 0;}
- 移动小球
- 移动小球
- 移动小球
- 移动小球
- 移动小球
- 移动小球
- sicily 1934移动小球
- 移动的小球
- nyoj 551 移动小球
- NYOJ 511 移动小球
- sicily--1934. 移动小球
- winform小球移动
- java 链表,移动小球
- 6.2 移动小球
- html5小球移动
- SICILY 1934 移动小球
- NYOJ 551 移动小球
- NYOJ 511 移动小球
- 调支付宝接口发现 isSign=false的诡异问题
- 设计模式
- 目标文件格式分析工具: ar,nm,objdump,objcopy,readelf
- tomcat加载总结
- 为 android, ipad, surface 写的swipe旋转菜单效果 没有整理, 将就着看
- 移动小球
- Cocos2dx 对象的内存管理1
- 随机采样系列1:线性同余发生器:生成伪随机数
- Android的ImageView如何显示网络图片资源
- 错误:ui_mainwindow.h:No such file or directory
- Android 中Message,MessageQueue,Looper,Handler详解+实例
- 兼容火狐和IE的showModalDialog模态窗口
- Windows XP的cmd中无法使用ping或者ipconfig等命令的解决方法
- exit与atexit