HDU 3328 栈+模拟
来源:互联网 发布:数据迁移方案 详细 编辑:程序博客网 时间:2024/06/06 00:18
Problem Description
Little Bobby Roberts (son of Big Bob, of Problem G) plays this solitaire memory game called Flipper. He starts with n cards, numbered 1 through n, and lays them out in a row with the cards in order left-to-right. (Card 1 is on the far left; card n is on the far right.) Some cards are face up and some are face down. Bobby then performs n - 1 flips — either right flips or left flips. In a right flip he takes the pile to the far right and flips it over onto the card to its immediate left. For example, if the rightmost pile has cards A, B, C (from top to bottom) and card D is to the immediate left, then flipping the pile over onto card D would result in a pile of 4 cards: C, B, A, D (from top to bottom). A left flip is analogous.
The very last flip performed will result in one pile of cards — some face up, some face down. For example, suppose Bobby deals out 5 cards (numbered 1 through 5) with cards 1 through 3 initially face up and cards 4 and 5 initially face down. If Bobby performs 2 right flips, then 2 left flips, the pile will be (from top to bottom) a face down 2, a face up 1, a face up 4, a face down 5, and a face up 3.
Now Bobby is very sharp and you can ask him what card is in any position and he can tell you!!! You will write a program that matches Bobby’s amazing feat.
Input
Each test case will consist of 4 lines. The first line will be a positive integer n (2 ≤ n ≤ 100) which is the number of cards laid out. The second line will be a string ofn characters. A character U indicates the corresponding card is dealt face up and a character D indicates the card is face down. The third line is a string of n - 1 characters indicating the order of the flips Bobby performs. Each character is either R, indicating a right flip, or L, indicating a left flip. The fourth line is of the formm q1 q2 … qm, where m is a positive integer and 1 ≤ qi ≤ n. Each qi is a query on a position of a card in the pile (1 being the top card, n being the bottom card). A line containing 0 indicates end of input.
Output
Each test case should generate m + 1 lines of output. The first line is of the form
Pile t
where t is the number of the test case (starting at 1). Each of the next m lines should be of the form
Card qi is a face up k.
or
Card qi is a face down k.
accordingly, for i = 1, ..,m, where k is the number of the card.
For instance, in the above example with 5 cards, if qi = 3, then the answer would be
Card 3 is a face up 4.
Sample Input
5
UUUDD
RRLL
5 1 2 3 4 5
10
UUDDUUDDUU
LLLRRRLRL
4 3 7 6 1
0
Sample Output
Pile 1
Card 1 is a face down 2.
Card 2 is a face up 1.
Card 3 is a face up 4.
Card 4 is a face down 5.
Card 5 is a face up 3.
Pile 2
Card 3 is a face down 1.
Card 7 is a face down 9.
Card 6 is a face up 7.
Card 1 is a face down 5.
题意:给你n张编号为1~n的(正反两面)牌放在桌子上。初始时有一个状态(U代表数字朝上,D代表数字朝下),接下来有n-1个操作。
L代表将最左边的牌翻转放到旁边牌的最上方,R代表将最右边的牌翻转放到旁边牌的最上方。输出最终状态牌和状态;
比如所给第一组测试数据:初始状态 (正)1,(正)2,(正)3,(反)4,反(5);
接下来:R之后:(正)1,(正)2,(正)3,(正)5(反)4;
R之后:(正)1,(正)2,(正)4(反)5(正)3;
L之后:(反)1(正)2,(正)4(反)5(正)3;
L之后:(反)2(正)1(正)4(反)5(正)3;
#include<stdio.h>#include<string.h>#include<stack>using namespace std;int main(){ int i,j,k,n,m,l,r,kase=1; char a[101]; char b[101]; int vis[101]; int num[101]; stack<int> s[101]; while(scanf("%d",&n),n) { for(i=0;i<n;i++) { s[i].push(i); } scanf("%s",a); for(i=0;i<n;i++) { if(a[i]=='U') vis[i]=1; else vis[i]=-1; } l=0,r=n-1;//l,r来控制牌向右摞时需要翻面的个数 scanf("%s",b); for(i=0;i<n-1;i++) { if(b[i]=='L') { for(j=0;j<=l;j++) vis[j]=-1*vis[j]; l++; while(!s[l-1].empty())// { s[l].push(s[l-1].top()); s[l-1].pop(); } } else { for(j=n-1;j>=r;j--) vis[j]=-1*vis[j]; r--; while(!s[r+1].empty()) { s[r].push(s[r+1].top()); s[r+1].pop(); } } } for(i=0;i<n;i++)//将最后一摞牌存入数组; { num[i]=s[l].top(); s[l].pop(); } printf("Pile %d\n",kase++); scanf("%d",&m); while(m--) { scanf("%d",&k); printf("Card %d is a face ",k); printf(vis[num[k-1]]==1?"up":"down"); printf(" %d.\n",num[k-1]+1); } } }
- HDU 3328 栈+模拟
- HDU-3328-Flipper(栈模拟)
- hdu 3328 Flipper(栈模拟)
- HDU 3328 Flipper(栈模拟)
- HDU 3328 Flipper [模拟]
- hdu 4699 模拟栈
- hdu 5831 栈+模拟
- hdu 3328 Flipper 模拟题
- hdu Flipper (用栈模拟)
- hdu 4699 双栈模拟
- HDU 1237 双栈模拟
- HDU 1022 栈 栈的模拟
- HDU 1237 简单计算器 (栈模拟)
- hdu 3887 树状数组(模拟栈)
- HDU 1022(栈模拟;暴力搜索)
- hdu 1022 Train Problem I 栈模拟
- hdu 1237(模拟栈、水题)
- HDU 4041 Eliminate Witches! (栈的模拟)
- zzuli 1917(晴天子序列)
- CENTOS下SSH证书登录
- Java使用文件流的方式下载文件
- markdown 分页 排序 搜索文章
- Impala实践之九:invalidate metadata详细使用方法说明
- HDU 3328 栈+模拟
- JAVA 解决tomcat占用8080端口问题
- 常用的20个正则表达式校验
- 2016.08.19上午【初中部 NOIP普及组 】模拟
- Android之surfaceView学习
- Impala实践之十:impala最佳实践(转、译、整理)
- exp11g新特性exp不能导出空表的处理方法
- IOException while loading persisted sessions: java.io.EOFException
- 转载 的安卓反编译