題目:
仔細(xì)看看題目,這題惡心死我,沒看清楚題目搞了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 }