NYOJ 511 移动小球
2014-03-20 16:34
302 查看
一道水题,是看到入门经典里有这道题目才来做的.
因为之前一看到数组下标就头疼,做这道题之前就有不祥的预感.果然
哎....
题目很简单,只要写出数组左移和右移的函数一般来说就解决了.
可是我偏偏在寻找下标的时候漏了一个'=' 就这样折腾了我半天....
这次是用数组写的,晚上用链表试试.
因为之前一看到数组下标就头疼,做这道题之前就有不祥的预感.果然
哎....
题目很简单,只要写出数组左移和右移的函数一般来说就解决了.
可是我偏偏在寻找下标的时候漏了一个'=' 就这样折腾了我半天....
这次是用数组写的,晚上用链表试试.
#include <stdio.h> int ball[11000]; void Rightmove(int p,int q); void Leftmove(int p,int q); int find(int x,int n); int main() { //freopen("input.txt","r",stdin); char s; int N; scanf("%d",&N); int X,Y; while (N--) { int i; int m,n; scanf("%d%d",&m,&n); getchar(); for (int i = 1; i <= m; i++) ball[i] = i; for (int j = 0; j < n; j++) { scanf("%c%d%d",&s,&X,&Y); getchar(); int p = find(X,m); int q = find(Y,m); if (s == 'A') { if (p > q) Rightmove(q,p); else Leftmove(p,q - 1); } else if (s == 'B') { if (p > q) Rightmove(q + 1,p); else Leftmove(p ,q); } else { if(X == 1) { if(q==m) printf("%d\n",ball[1]); else printf("%d\n",ball[q + 1]); } else { if(q==1) printf("%d\n",ball[m]); else printf("%d\n",ball[q - 1]); } } } } return 0; } void Leftmove(int p,int q) { int i; int temp = ball[p]; for (i = p; i < q; i++) ball[i] = ball[i + 1]; ball[i] = temp; } void Rightmove(int p,int q) { int i; int temp = ball[q]; for (i = q; i > p; i--) ball[i] = ball[i - 1]; ball[i] = temp; } int find(int x,int n) { for (int i = 0; i <= n; i++) if (ball[i] == x) return i; }
相关文章推荐
- NYOJ 题目511 移动小球(双向循环链表)
- NYOJ-511-移动小球
- NYOJ511 移动小球(链表基础题)(链表法+非链表法)
- NYOJ 511 移动小球
- NYOJ-511 移动小球【模拟】
- NYOJ 511 - 移动小球 链表版
- [转]NYOJ-511-移动小球
- [转]NYOJ-511-移动小球
- nyoj 551 移动小球
- NYOJ-移动小球
- NYOJ 551 移动小球
- 移动小球
- 6-1 移动的小球
- Android实现移动小球和CircularReveal页面切换动画实例代码
- 1934. 移动小球
- Sicily 1934. 移动小球
- 车载设置--音场设置 自定义跟随手指移动的小球
- Python:pygame游戏编程之旅二(自由移动的小球)
- 小球在屏幕上随机移动
- 移动小球