pku 1234 Ball Toss 模拟

题目:
仔细看看题目,这题恶心死我,没看清楚题目搞了1小时才出sample,幸好1Y。提醒几点:
(1)终止条件:每个人都接到过球(第一个人不算接到过)
(2)特殊情况处理:如果待传球的人是自己,则将球传到自己的(不是传球人)反方向

代码:
 1 # include <iostream>
 2 # include <cstring>
 3 using namespace std;
 4 char data[31];
 5 int n,c;
 6 bool used[31];
 7 int main()
 8 {
 9     while(true)
10     {
11         int t;
12         cin>>n;
13         if(!n) break;
14         cin>>t;
15         for(int i=0;i<n;i++)
16             cin>>data[i];
17         int ans=1,p=t-1,last=0;
18         c=n-1;
19         memset(used,0,sizeof(used));
20         used[p]=true;
21         do
22         {
23             int orip=p;
24             switch(data[p])
25             {
26             case 'L':
27                 if(p==(last-1+n)%n) p=(p-1+n)%n;
28                 else p=(last-1+n)%n;
29                  data[orip]='R';
30                 break;
31             case 'R':
32                 if(p==(last+1)%n) p=(p+1)%n;
33                 else p=(last+1)%n;
34                 data[orip]='L';
35                 break;
36             };
37             last=orip;
38             if(!used[p]) used[p]=true,c--;
39             ans++;
40         }while(c>0);
41         cout<<"Classmate "<<p+1<<" got the ball last after "<<ans<<" tosses."<<endl;
42     }
43     return 0;
44 }

posted on 2011-01-20 01:48 yzhw 阅读(189) 评论(0)  编辑 收藏 引用 所属分类: simple problem~


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2011年1月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

导航

统计

公告

统计系统

留言簿(1)

随笔分类(227)

文章分类(2)

OJ

最新随笔

搜索

积分与排名

最新评论

阅读排行榜