- 播放器
Description
shadow喜歡聽音樂(lè),于是v11自己寫了個(gè)播放器送給了shadow,這個(gè)播放器有一個(gè)播放列表,一個(gè)“下一首”按鈕,一個(gè)“上一首”按鈕,還有一個(gè)播放記錄。
一開始播放器會(huì)播放播放列表中的第一首歌,當(dāng)按下“下一首”按鈕時(shí),它會(huì)播放當(dāng)前歌曲在播放列表中的下一首歌,若當(dāng)前歌曲就是播放列表中的最后一首歌時(shí),它仍會(huì)播放播放列表中的最后一首歌;當(dāng)按下“上一首”按鈕時(shí),它會(huì)清除播放記錄中的最后一首歌,并播放清除后播放記錄中的最后一首歌,若清除后播放記錄為空,則播放播放列表中的第一首歌;當(dāng)按下播放列表中的某一首歌曲,它會(huì)播放該首歌曲。
任何時(shí)候,當(dāng)播放器播放一首歌時(shí),如果該歌曲與播放記錄中的最后一首不同或者播放記錄為空,便將該歌曲添加到播放記錄中成為最后一首。
現(xiàn)在shadow對(duì)播放器進(jìn)行了一系列操作,那么你能告訴我shadow進(jìn)行每一個(gè)操作后,播放器在播放哪首歌嗎?
Input
輸入數(shù)據(jù)第一行包含一個(gè)整數(shù)T,表示測(cè)試數(shù)據(jù)的組數(shù)。對(duì)于每組測(cè)試數(shù)據(jù):
第一行包含兩個(gè)整數(shù)n( 0 < n <= 500 )、m( 0 < m <= 10000),分別表示播放列表中有n首歌曲,shadow進(jìn)行了m項(xiàng)操作,播放列表中歌的編號(hào)依次為1,2,3……n 。
接下來(lái)m行,每行為以下三種形式之一:
PRE 表示按下了“上一首”按鈕。
PLAY x 其中x為一個(gè)整數(shù)( 0 < x <= n ),表示按下了播放列表中的第x首歌。
NEXT 表示按下了“下一首”按鈕。
Output
對(duì)于每組數(shù)據(jù):輸出m行,每行一個(gè)整數(shù),表示執(zhí)行了一項(xiàng)操作后播放器正在播放的歌曲。Sample Input
1 5 10 PRE NEXT PLAY 5 NEXT PLAY 5 PLAY 3 NEXT PRE PRE PRESample Output
1 2 5 5 5 3 4 3 5 2 是不是看見(jiàn)中文很親切... 我的錯(cuò)誤就是原來(lái)一直用的gets,這是一個(gè)不好的習(xí)慣 #include<stdio.h> #include<string.h> #include<math.h> int t[10000]; int main() {int n,i,j,k,h,p,m,q,v,f;char a[10];scanf("%d",&n);for(i=1;i<=n;i++){p=1;h=0;scanf("%d%d",&m,&k);for(j=1;j<=k;j++){scanf("%s",a);if(strcmp(a,"NEXT")==0){if(p+1<=m){printf("%d\n",p+1);if(h==0||t[h]!=p+1){h++;t[h]=p+1;p++;}}else if(p+1>m){printf("%d\n",m);p=m;if(h==0||t[h]!=p){h++;t[h]=p;}}}else if(strcmp(a,"PRE")==0){if(h-1!=0&&h!=0){t[h]=0;h--;printf("%d\n",t[h]);p=t[h];}else if(h-1==0||h==0){h=0;printf("1\n");p=1;}}else{int key;scanf("%d",&key);if(key!=p)t[++h]=key;printf("%d\n",key);p=key;}}}return 0; }總結(jié)
- 上一篇: 模拟电路66(串联型稳压电路2)
- 下一篇: 2017云栖大会 域名专场 诚信经营 从