简单题。模拟浏览器打开网页的前进后退顺序。
这道题的题目有诱使使用两个stack的嫌疑,但其实只用字符串数组和两个游动下标就足够了
C++ 00:00.01 400K
//
1061
// C++ 00:00.01 400K
#include < stdio.h >
#include < string .h >
char log[ 102 ][ 72 ];
int lognum,cur;
int main()
{
// freopen("1061.txt","r",stdin);
int k,nn;
strcpy(log[ 1 ], " http://www.acm.org/ " );
scanf( " %d " , & nn);
for (k = 1 ;k <= nn;k ++ )
{
char com[ 10 ];
lognum = 1 ;
cur = 1 ;
while (scanf( " %s " , com) != EOF && com[ 0 ] != ' Q ' )
{
if ( ' V ' == com[ 0 ])
{
cur ++ ;
lognum = cur;
scanf( " %s " , log[lognum]);
printf( " %s/n " , log[cur]);
}
else if ( ' B ' == com[ 0 ])
{
if ( 1 == cur)
printf( " Ignored/n " );
else
{
cur -- ;
printf( " %s/n " , log[cur]);
}
}
else // if('F'==com[0])
{
if (lognum == cur)
printf( " Ignored/n " );
else
{
cur ++ ;
printf( " %s/n " , log[cur]);
}
}
}
if (k != nn) printf( "/n " );
}
// fclose(stdin);
return 0 ;
}
// C++ 00:00.01 400K
#include < stdio.h >
#include < string .h >
char log[ 102 ][ 72 ];
int lognum,cur;
int main()
{
// freopen("1061.txt","r",stdin);
int k,nn;
strcpy(log[ 1 ], " http://www.acm.org/ " );
scanf( " %d " , & nn);
for (k = 1 ;k <= nn;k ++ )
{
char com[ 10 ];
lognum = 1 ;
cur = 1 ;
while (scanf( " %s " , com) != EOF && com[ 0 ] != ' Q ' )
{
if ( ' V ' == com[ 0 ])
{
cur ++ ;
lognum = cur;
scanf( " %s " , log[lognum]);
printf( " %s/n " , log[cur]);
}
else if ( ' B ' == com[ 0 ])
{
if ( 1 == cur)
printf( " Ignored/n " );
else
{
cur -- ;
printf( " %s/n " , log[cur]);
}
}
else // if('F'==com[0])
{
if (lognum == cur)
printf( " Ignored/n " );
else
{
cur ++ ;
printf( " %s/n " , log[cur]);
}
}
}
if (k != nn) printf( "/n " );
}
// fclose(stdin);
return 0 ;
}