容量1028

タイトル

ウェブナビゲーション
時間制限:  1000ミリ秒   メモリ制限:  10000K
合計提出:  33497   受け入れ:  14937

説明

標準のWebブラウザは、最近アクセスしたページ間を前後に移動する機能が含まれています。これらの機能を実装するための一つの方法は、前後に移動することで到達できるページを追跡するために2つのスタックを使用することです。この問題では、これを実装するように求められます。 
以下のコマンドがサポートされる必要がある: 
BACK:前方スタックの一番上に現在のページを押してください。その新しい現在のページ作り、後方スタックの最上位からページをポップ。後方スタックが空の場合、コマンドは無視されます。 
FORWARD:後方スタックの一番上に現在のページを押してください。その新しい現在のページ作り、前方スタックの最上位からページをポップ。前方スタックが空の場合、コマンドは無視されます。 
VISIT:後方スタックの一番上に現在のページを押して、URLが新しい現在のページを指定します。前方スタックが空になります。 
QUIT:ブラウザを終了します。 
ブラウザが最初にURL http://www.acm.org/でWebページをロードすると仮定

入力

入力は、一連のコマンドです。コマンドのキーワードBACK、FORWARD、VISIT、およびQUITは大文字ですべてです。URLは何の空白を持たず、ほとんどの70文字で持っています。あなたは何の問題インスタンスが任意の時点で、各スタック内の100個の以上の要素を必要としないことを仮定してもよいです。入力の終了はQUITコマンドで示されています。

出力

QUIT以外の各コマンドについては、コマンドは無視されていない場合は、コマンドが実行された後、現在のページのURLを印刷します。それ以外の場合は、印刷は「無視します」。各コマンドの出力は、独自の行に印刷されなければなりません。何も出力はQUITコマンドで生成されません。

サンプル入力

VISIT http://acm.ashland.edu/
VISIT http://acm.baylor.edu/acmicpc/
バック
バック
バック
FORWARD
VISIT http://www.ibm.com/
バック
バック
FORWARD
FORWARD
FORWARD
終了する

サンプル出力

http://acm.ashland.edu/
http://acm.baylor.edu/acmicpc/
http://acm.ashland.edu/
http://www.acm.org/
無視されました
http://acm.ashland.edu/
http://www.ibm.com/
http://acm.ashland.edu/
http://www.acm.org/
http://acm.ashland.edu/
http://www.ibm.com/
無視されました

問題の意味の分析

フォワードブラウザとアナログのバックオフの左上隅も同様です。

コード

ソースコード

問題: 1028   ユーザー: PaladinDu
メモリ:  176K   時間:  32MS
言語:  C ++   結果: 受け入れ
  • ソースコード
    #include<stdio.h>
    #include<string.h>
    int main(){
            char buf[105][80],action[10],top,temp;
            strcpy(buf[1],"http://www.acm.org/");
            scanf("%s",action);
    	top=temp=1;
            while(strcmp(action,"QUIT")!=0)
            {
                    if(strcmp(action,"VISIT")==0)
                    {
    			top=temp;
    			top++;
    			temp=top;
                            scanf("%s",buf[top]);
                            printf("%s\n",buf[top]);
                    }else if(strcmp(action,"BACK")==0)
                    {
                            if(temp-1>0)printf("%s\n",buf[--temp]);
    			else printf("Ignored\n");
                    }else if(strcmp(action,"FORWARD")==0)
                    {
                            if(temp+1<=top)printf("%s\n",buf[++temp]);
    			else printf("Ignored\n");
    		}
                    scanf("%s",action);
    	}
    	return 0;
    }

发布了54 篇原创文章 · 获赞 1 · 访问量 2万+

おすすめ

転載: blog.csdn.net/u011255131/article/details/53580588