zoukankan      html  css  js  c++  java
  • Uva 10935 Throwing cards away I

    题目意思:有N张牌,标号为1~N,且牌以叠好,从上到小就是标号1~N的牌,只要牌堆数量大于等于2的时候,就采取如下操作:将最上面的牌扔掉(即离开牌堆)。刚才那张牌离开后,再将新的最上面的牌放置于牌堆最后一张。

    要求输出:依次输出被扔掉的牌,按扔掉的顺序输出。最后要输出最后留下的一张牌。

    思路:用一个队列来模拟,被扔掉的牌相当于取出后进行pop操作,把最上面的牌放置最后相同于取出后进行pop操作和push操作,直至队列的size小于等于1

    注意点:因为题目对格式的要求,所以第一张被扔掉的牌格式处理上于后面被扔掉的牌有所不同。

    /*
    	UvaOJ 10935
    	Emerald
    	Sat 2 May 2015
    */
    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <queue>
    
    using namespace std;
    
    queue <int> q;
    
    void Init( int N ) {
    	while( !q.empty() ) {
    		q.pop();
    	}
    	for( int i=1; i<N+1; i++ ) {
    		q.push( i );
    	}
    }
    
    void Throw( ) {
    	printf( "Discarded cards: %d", q.front() );
    	q.pop();
    	q.push( q.front() );
    	q.pop();
    	while( q.size() >= 2 ) {
    		printf( ", %d", q.front() );
    		q.pop();
    		q.push( q.front() );
    		q.pop();
    	}
    	printf( "
    " );
    	printf( "Remaining card: %d
    ", q.front() );
    }
    
    int main() {
    	int N;
    	while( cin >> N && N ) {
    		Init( N );
    		if( N==1 ) {
    			printf( "Discarded cards:
    " );
    			printf( "Remaining card: 1
    " );
    		} else {
    			Throw();
    		}
    	}
    	return 0;
    }
    
  • 相关阅读:
    即时通讯之环信视频语音实时通话与单聊和群聊实现
    检测.net framework 版本
    Abp(.NetCore)开发与发布过程3-部署Ubuntu站点
    Abp(.NetCore)开发与发布过程2
    Abp(.NetCore)开发与发布过程
    Redis实战与 Session缓存
    Redis 安装与初体验
    [转]gluPerspective函数
    [转]gluLookAt 函数详解
    [转]unity3D游戏开发之GUI
  • 原文地址:https://www.cnblogs.com/Emerald/p/4480748.html
Copyright © 2011-2022 走看看